我对 Python 很陌生,所以请耐心等待。我想运行一个程序,它将在特定范围内打乱一串整数,但不必输入该范围内的每个整数。即,我想在不输入 (1, 2, 3...100) 的情况下随机化整数列表 b/w 1-100。
是的,我已经查看了类似问题的其他答案,但都要求特定范围内的一个整数,或者没有针对 Python 的答案,或者要求更复杂的东西。谢谢
您可以使用range()
withlist()
来生成整数列表,然后应用于random.shuffle()
该列表。
>>> lst = list(range(1,11))
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> random.shuffle(lst)
>>> lst
[4, 5, 3, 9, 2, 10, 7, 1, 6, 8]
range
模块内置类的帮助:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive)
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
如果您希望整个人口在给定范围内,正如@Ashwini 建议的那样,您可以使用random.shuffle
如果您对人口的一个子集感兴趣,您可以期待使用random.sample
>>> random.sample(range(1,10),5)
[3, 5, 2, 6, 7]
您也可以使用它来模拟random.shuffle
>>> random.sample(range(1,10),(10 - 1))
[4, 5, 9, 3, 2, 8, 6, 1, 7]
注意,使用 random.sample 优于 random.shuffle 的优点是,它可以在迭代器上工作,所以在
range()
为列表xrange