列表理解而不是重复数字列表的循环嵌套

时间:2015-01-10 00:05:45

标签: python python-2.7 list-comprehension

我想创建一个脚本,在两个变量(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]

3 个答案:

答案 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]
相关问题