我正在用python编写程序。在其中,我想生成一个列表。此列表将从1开始并递增1 [1, 2, 3, 4, 5, etc.]
。
但是,我希望列表的长度是随机的,长度在3个数字和8个数字之间。例如,在一次运行中,列表可能会生成[1, 2, 3, 4]
,另一次运行可能会生成1, 2, 3, 4, 5, 6]
,另一次运行可能会生成[1, 2, 3]
,依此类推。
我知道如何使列表生成随机数,但不能使它以随机长度递增数字。感谢您的时间。我顺便使用Python 2.7。
答案 0 :(得分:3)
import random
start = 1
end = random.randint(3, 8)
l = range(start, end + 1)
答案 1 :(得分:3)
只需
l1 = [ i + 1 for i in range(randint(...) ]
答案 2 :(得分:2)
你可以使用range()来做到这一点,其中第一个参数是开始,第二个参数是随机长度
import random
range(1, random.randint(3, 8))
答案 3 :(得分:2)
一个itertools方法 - 这也意味着如果你不需要实现列表,那么你不必:
from itertools import count, islice
from random import randint
mylist = list(islice(count(1), randint(3, 8)))
由于count
是每次递增1的生成器,我们使用islice
来“限制”我们从中获取的项目总数,然后构建列表。
答案 4 :(得分:0)
from random import randint
l = range(1,randint(3,8)+1 )
print l
答案 5 :(得分:0)
如果您在底端指定4而将9指定为randint
的顶部,您将获得最多8个数字,就像您要求的那样。 您需要这是因为您在1开始range
。
>>> import random
>>> range(1, random.randint(4,4))
[1, 2, 3]
>>> range(1, random.randint(9,9))
[1, 2, 3, 4, 5, 6, 7, 8]
>>> rand_list = range(1, random.randint(4,9))
>>> rand_list
[1, 2, 3, 4, 5, 6, 7]
Range()
第一个参数是起点。第二个参数是停止。在stop == 3
。
>>> range(1,3)
[1, 2]
>>> range(1,4)
[1, 2, 3]
>>> range(1,8)
[1, 2, 3, 4, 5, 6, 7]
>>> range(1,9)
[1, 2, 3, 4, 5, 6, 7, 8]