Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建随机长度的列表_Python_Python 2.7 - Fatal编程技术网

在python中创建随机长度的列表

在python中创建随机长度的列表,python,python-2.7,Python,Python 2.7,我正在用python编写一个程序。在其中,我想生成一个列表。此列表将从一开始,然后递增一个[1、2、3、4、5等] 但是,我希望列表的长度是随机的,介于3到8个数字之间。例如,在一次运行中,列表可能会生成[1,2,3,4],在另一次运行中,列表可能会生成1,2,3,4,5,6],在另一次运行中,列表可能会生成[1,2,3],依此类推 我知道如何使一个列表生成随机数,但不能使它以随机长度递增数字。谢谢你抽出时间。顺便说一下,我使用的是Python2.7。您可以使用range()实现,其中第一个参数

我正在用python编写一个程序。在其中,我想生成一个列表。此列表将从一开始,然后递增一个
[1、2、3、4、5等]

但是,我希望列表的长度是随机的,介于3到8个数字之间。例如,在一次运行中,列表可能会生成
[1,2,3,4]
,在另一次运行中,列表可能会生成
1,2,3,4,5,6]
,在另一次运行中,列表可能会生成
[1,2,3]
,依此类推

我知道如何使一个列表生成随机数,但不能使它以随机长度递增数字。谢谢你抽出时间。顺便说一下,我使用的是Python2.7。

您可以使用range()实现,其中第一个参数是start,第二个参数是random length

import random
start = 1
end = random.randint(3, 8)
l = range(start, end + 1)
import random
range(1, random.randint(3, 8))
只是


如果在
randint
的底端指定4,在顶部指定9,则最多可以得到8个数字您需要执行此操作,因为
范围从1开始

>>> 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]
第一个论点是出发点。第二个参数是停止。在
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]

itertools方法-这也意味着如果您不需要实现列表,那么您不必:

from itertools import count, islice
from random import randint

mylist = list(islice(count(1), randint(3, 8)))

由于
count
是一个每次递增1的生成器,因此我们使用
islice
来“限制”从中获取的项目总数,然后构建一个列表。

您需要
random.randint(3,9)
在那里。这有时只会生成两个数字。感谢您指出:-)希望这个小问题可以由op自己解决(尽管我已经更正了我的答案)可能更好的是
范围(开始,开始+结束)
为什么我的答案不有用?
范围(1,random.randint(4,9))
>>> 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]
from itertools import count, islice
from random import randint

mylist = list(islice(count(1), randint(3, 8)))