我正在调整一个元素列表a1,... a6,... e1,...,e6
同时保留两条规则:
如果我循环浏览列表并过滤掉特定的字母或数字,则应按顺序排列:
a1,a2,a3 ...或a1,b1,c1 ......
如何按照这些规则洗牌?有一个python库。这样的任务?
以下是适合标准的洗牌示例:
a1,b1,a2,b2,c1,a3,d1,c2,d2,e1,a4,b3,c3,d3,b4,d4,c4,a5,e2,d5,e3,c5,a6,b5 ,e4,a7,b6,c6,b7,d6,e5,e6,c7,d7,e7
for each in shuffled:
if each[1]=='1':
print(each)
产量:a1,b1,c1,d1,e1。
问题不是对它们进行排序,而是首先生成随机列表。
答案 0 :(得分:0)
不确定是否有图书馆这样做。 有一个简单的解决方案:
首先,将列表拆分为子列表,其中元素按顺序排列:
x = [['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7'],
['b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7'],
['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7'],
['d1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7'],
['e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7']]
然后弹出随机选择的子列表的第一个元素。
from random import shuffle
select = list(range(5))*7
shuffle(select)
[x[idx].pop(0) for idx in select]
结果是(取决于你的随机播放结果):
['a1', 'b1', 'c1', 'e1', 'c2', 'e2', 'd1', 'a2', 'a3', 'b2', 'c3', 'c4', 'c5', 'c6', 'd2', 'e3', 'b3', 'a4', 'b4', 'a5', 'd3', 'a6', 'e4', 'd4', 'e5', 'd5', 'a7', 'e6', 'd6', 'b5', 'e7', 'b6', 'd7', 'c7', 'b7']