Dre*_*Dre 6 python random shuffle
我想随机随机播放一个列表,以便在洗牌时列表中的每个变量都放在列表中的新位置.
我目前在做什么:
list = ['a', 'b','c', 'd'];
random.shuffle(list)
list
['c','b','d','a']
Run Code Online (Sandbox Code Playgroud)
通过这种方法,我可以对列表进行洗牌,但在这种情况下,"b"仍然可以将变量放在同一个位置.
我想要的输出
完全洗牌的清单
['c','a','d','b']
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助.我是python的新手,但如果需要任何进一步的信息,请告诉我.
像这样的事情应该做你想做的:
import random
import copy
def super_shuffle(lst):
new_lst = copy.copy(lst)
random.shuffle(new_lst)
for old, new in zip(lst, new_lst):
if old == new:
return super_shuffle(lst)
return new_lst
Run Code Online (Sandbox Code Playgroud)
例子:
In [16]: super_shuffle(['a', 'b', 'c'])
Out[16]: ['b', 'c', 'a']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |