【发布时间】:2018-09-25 09:04:47
【问题描述】:
我想在 python3 中创建一个列表,如下所示:
L = [(0,(0,1,2,3,4)), (1, (5,6,7,8,9)),(2,(10,11,12,13,14))......)
我们称之为L= [(i,(j1,j2,j3,j4,j5),...)
重要的是模式不断重复,直到 j5 达到740231
非常感谢任何建议。
【问题讨论】:
标签: python python-3.x list tuples
我想在 python3 中创建一个列表,如下所示:
L = [(0,(0,1,2,3,4)), (1, (5,6,7,8,9)),(2,(10,11,12,13,14))......)
我们称之为L= [(i,(j1,j2,j3,j4,j5),...)
重要的是模式不断重复,直到 j5 达到740231
非常感谢任何建议。
【问题讨论】:
标签: python python-3.x list tuples
另一种方式,严格理解:
L = [(i,tuple(range(i*5,i*5+5))) for i in range(740231//5+1)]
【讨论】:
这是使用enumerate 和range 的一种解决方案:
n = 5
k = 14
ranger = (range(i, i+n) for i in range(0, k, n))
L = list(enumerate(map(tuple, ranger)))
# [(0, (0, 1, 2, 3, 4)), (1, (5, 6, 7, 8, 9)), (2, (10, 11, 12, 13, 14))]
【讨论】:
使用生成器函数:
def gen():
x = 0
y = 0
while y < 740231:
yield( (x, tuple(range(y,y+5)), ) )
x += 1
y += 5
>>> list(gen())
[(0, (0, 1, 2, 3, 4)), (1, (5, 6, 7, 8, 9)), (2, (10, 11, 12, 13, 14)) ... ]
【讨论】: