在Python 3.4中生成带有重复项的随机数随机列表

时间:2016-06-27 00:19:31

标签: python list python-3.x random list-comprehension

我在打印随机数列表时看到了多个线程,但没有看到具有我特定要求的线程,我似乎无法做到正确。

我想开发一个代码,该代码将在某个时间间隔内生成一个随机数列表,其中列表是一个随机长度,单独一个区间,同样,重复项需要在此列表中。我也希望在一行中完成。

我想出了一个非常好的尝试使用random.sample,但是样本不包含重复项,并且它也不会让我使列表中的数字范围大于列表本身。 (例如,它不能生成5个数字长的列表,但数字大于1到5。)

>> a = random.sample(range(10), random.randint(1,10,1))
>> print(a)
[6, 3, 4, 2, 5, 7, 8]

为了摆脱没有重复的问题,以及大于长度问题的数字,我尝试了这个,但我不能使范围随机,否则我得到一个TypeError:

>> a = [random.randint(1,20) for x in range(1, 10)]
>> print(a)
[8, 7, 20, 20, 5, 18, 9, 3, 19]

以下是我尝试随机范围的版本:

>> a = [random.randint(1,20) for x in random.randrange(1,10)]
>> print(a)
    Traceback (most recent call last):

      File "<ipython-input-258-b3a6b0409007>", line 1, in <module>
        a = [random.randint(1,20) for x in random.randrange(1,10)]

    TypeError: 'int' object is not iterable

不太清楚为什么我不能在某个时间间隔内创建一个随机范围,但我是初学者,所以我确定我只是遗漏了一些东西。

1 个答案:

答案 0 :(得分:1)

正如错误所示,

random.randrange(1,10)返回一个整数。您可以将它用作range函数的上限,如下所示:

a = [random.randint(1,20) for x in range(1, random.randrange(1,10))]