【发布时间】: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