我对Python很新,所以请耐心等待。我想运行一个程序,它将在特定范围内对一串整数进行混洗,但不必输入该范围内的每个整数。即,我想在没有输入(1,2,3 ... 100)的情况下随机化整数列表b / w 1-100。
是的,我已经查看了类似问题的其他答案,但是所有人都要求在特定范围内使用一个整数,或者没有为Python解答,或者要求更复杂的东西。感谢
答案 0 :(得分:11)
您可以使用range()
生成整数列表,然后在该列表中应用random.shuffle()
。
In [141]: lis = range(1,11)
In [142]: lis
Out[142]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In [143]: random.shuffle(lis)
In [144]: lis
Out[144]: [1, 4, 3, 10, 8, 2, 6, 9, 5, 7]
help()
上的 range()
:
范围([start,] stop [,step]) - >整数列表
返回包含整数算术级数的列表。 range(i,j)返回[i,i + 1,i + 2,...,j-1]; start(!)默认为0。 给出步骤时,它指定增量(或减量)。对于 例如,range(4)返回[0,1,2,3]。省略了终点! 这些正是4个元素列表的有效索引。
答案 1 :(得分:7)
如果您希望整个人口在给定范围内,As @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.shuffle上使用random.sample的优点是,它可以在迭代器上工作,所以在
中range()
转换为列表xrange