我想创建一个脚本,在两个变量(First_Number, Last_Number)
之间创建一个值列表,其中每个数字重复Repeat_Count
次。我编写了一个嵌套for
循环的脚本来执行此操作。我想用列表理解来做这个,但不知道是否可能。
First_Number = 1
Last_Number = 10
Repeat_Count = 5
MyList = []
for numbers in range(First_Number,Last_Number - First_Number + 2):
for repeated_number in range(0,Repeat_Count):
MyList.append(numbers)
print MyList
输出:
[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10]
答案 0 :(得分:4)
你可以这样做:
[x for x in xrange(First_Number, Last_Number+1) for y in xrange(Repeat_Count)]
答案 1 :(得分:0)
from itertools import chain
list(chain(*[[i]*repeat_count for i in range(first_number, last_number+1)]))
chain
将展平数组:[[1, 1], [2, 2]] => [1, 1, 2, 2]
[i]*repeat_count
是一种生成[i, i, i, ... , i]
此外,将变量命名为小写也是一般规则。
答案 2 :(得分:0)
你可以用pythonic方式做到这一点
>>> first_num = 1
>>> last_num = 10
>>> repeat_no = 5
>>> mylist = []
>>> [mylist.extend([num]*repeat_no) for num in range(first_num, last_num + 1)]
>>> mylist
[1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10]