在python中创建随机长度列表

时间:2013-11-16 16:53:45

标签: python python-2.7

我正在用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。

6 个答案:

答案 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]