所以我做了两个清单:
The first = [0...600] and
the second:`
numbers = -10
listnum = [numbers]
for i in range (1,600,24):
numbers += 1
listnum.insert(i,numbers)
打印
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
我需要制作第三个列表,其中600个数字,但第一组24个数字将被-10替换,第二个用-9替换,依此类推。 我知道怎么做就像
那样艰难for i in range (24):
listnum.insert(i,listnum[0])
for i in range (24,48):
listnum.insert(i,listnum[0])`
但我相信有更好的方法可以做到这一点。
答案 0 :(得分:0)
试试这个:
[x for y in ([z] * 24 for z in listnum) for x in y]
答案 1 :(得分:0)
OP中有数学错误。我将假设第一个列表是范围(600),然后告诉如何获取范围(601)版本,以防它不是错误。请注意,你说它有600个项目,但如果你检查len(第一个),你会发现它有601个。如果从零到一个数字计数,你将有一个额外的数字(因为你计算为零)。因此,范围(600)中的最后一个数字是599。
你想要计数24的-10,然后计算24的-9,......,然后计算24的14。
我的第一个观察是第一个列表只是范围(600)或范围(601),它与使用循环计数器没有什么不同。所以我不会替代它;我只想制作一个新的清单。
通用方法是将所有重复项添加到子列表中,形成如下:
l = []
for n in range(-10, 25):
l += [n] * 24
但是,由于这些都是数字,我们可以使用模运算轻松计算每个值。
[x/24-10 for x in range(600)]
或者匹配OP中的数学错误,我想你可能想要
[x/24-10 for x in range(601)]
最后将额外增加15个。
这种编写列表的方式是“列表理解”,您可以查找。这很常见。基本上,它将通过计算iterable中每个项目的数量“x / 24-10”来创建一个新列表,而iterable是range(),它通常用作计数器。