列表理解而不是嵌套For循环用于重复编号li

2024-03-28 21:49:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: in脚本number列表forcountrange数字
3条回答

你可以这样做:

[x for x in xrange(First_Number, Last_Number+1) for y in xrange(Repeat_Count)]

你可以用Python的方式

>>> 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]
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]的好方法

另外,一般的规则是将变量命名为小写。你知道吗

相关问题 更多 >