在特定范围python中随机播放列表

时间:2013-01-20 19:45:49

标签: python list range shuffle

我对Python很新,所以请耐心等待。我想运行一个程序,它将在特定范围内对一串整数进行混洗,但不必输入该范围内的每个整数。即,我想在没有输入(1,2,3 ... 100)的情况下随机化整数列表b / w 1-100。

是的,我已经查看了类似问题的其他答案,但是所有人都要求在特定范围内使用一个整数,或者没有为Python解答,或者要求更复杂的东西。感谢

2 个答案:

答案 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的优点是,它可以在迭代器上工作,所以在

  • Python 3.X你不需要将range()转换为列表
  • 在Python 2,X中,您可以使用xrange
  • 相同的代码可以在Python 2.X和3.X
  • 中使用