如何在Python中重复序列N次并递增序列内数值?
解决方法
先理清核心规律:你需要把原始序列(0,0,1,1,1,1)重复n次,每次重复时,序列里的每个元素都加上一个递增的奇数偏移量(1、3、5……)。比如n=3时,三次重复分别加1、3、5,就能得到你要的目标序列。
下面给两种简单可行的实现方式:
方式1:列表推导式
直接用嵌套循环生成,逻辑直观易懂:
sequence = (0, 0, 1, 1, 1, 1) n = 3 result = [num + (2 * i + 1) for i in range(n) for num in sequence] # 输出结果:[1,1,2,2,2,2,3,3,4,4,4,4,5,5,6,6,6,6]
方式2:结合itertools.chain
如果处理超大序列,用itertools可以避免生成中间列表,内存效率更高:
import itertools sequence = (0, 0, 1, 1, 1, 1) n = 3 # 生成每组偏移后的序列迭代器,再用chain扁平化 result = list(itertools.chain.from_iterable( (num + 2 * i + 1 for num in sequence) for i in range(n) ))
为什么之前的方法没生效?
大概率是没找对偏移量的规律——你可能用了每次加1的偏移(比如i+1),但这里需要步长为2的奇数偏移(1、3、5……),也就是2*i+1(i从0开始计数)。因为原始序列的元素跨度是1(0到1),只有用这种偏移,才能让下一组的起始值刚好比上一组的最大值大1,完全匹配你要的结果格式。
内容的提问来源于stack exchange,提问作者Spooked
相关产品推荐
相关产品推荐

