将重复序列分配给python中的索引

时间:2018-07-23 13:28:08

标签: python

我对python很陌生,我想知道如何将整数逐步分配给系列中的每个3 values。最好用一个例子来解释:

结果应包含以下模式:

(1,1),(2,1),(3,1),(4,2),(5,2),(6,2),(7,3).......

3 个答案:

答案 0 :(得分:3)

或者,仅使用一个简单的for循环和两个变量:

val1 = 1
val2 = 1
for a in range(10): # this number is arbitrarily large
    for b in range(3): # this number is not arbitrary
        print( (val1, val2) )
        val1 += 1
    val2 += 1

答案 1 :(得分:2)

您可以将楼层除法运算符与列表理解一起使用:

n = range(1, 10)
res = [(i, idx//3 + 1) for idx, i in enumerate(n)]

print(res)

[(1, 1), (2, 1), (3, 1),
 (4, 2), (5, 2), (6, 2),
 (7, 3), (8, 3), (9, 3)]

答案 2 :(得分:0)

如果您希望它是无限的,建议您查看itertools

中的实用程序
from itertools import count

def integers_rep(n):
    for i in count(1):
        for _ in range(n):
            yield i

def gen_sequence():
    return zip(count(1), integers_rep(3))

count(n)是一个可迭代的对象,它会无限制地从其第一个参数开始生成序列n, n+1, n+2, ...(如果未传递任何内容,则默认为0)。

gen_sequence将创建您的序列,使用zip来获取N个可迭代元素并生成N个元组的序列(两个序列=>对,三个=>三元组,等等)。通过采用count和其他顺序,您将可以得到他们的配对。

使用这些工具,您将可以在高层次上定义所有内容(这对数学序列很有用)。