【问题标题】:Generate Random List of Random Numbers with Duplicates in Python 3.4在 Python 3.4 中生成具有重复项的随机数的随机列表
【发布时间】:2016-10-28 21:37:44
【问题描述】:

我在打印随机数列表时看到了多个线程,但不是那些符合我特定要求的线程,而且我似乎无法正确处理。

我想开发一个代码,它将在某个间隔上生成一个随机数列表,该列表是一个单独的随机长度,另外,重复项需要在这个列表中。我也想在 1 行中做到这一点。

我想出了一个很好的尝试,使用 random.sample,但 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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我误解了 randrange() 函数,我认为它映射了一个范围,就像 range() 函数一样。那么,我将 randrange() 放在那里和将另一个 randint() 放在 range 函数之间有什么区别?
    • 其实你可以使用randint。不同的是randrange不包括端点;看看这个答案:stackoverflow.com/a/3540456/2074794
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2011-01-05
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多