2017-08-15 70 views
-2

我期待洗牌的元素列表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

你想隨機生成最終訂單(但服從兩個規則)?此外,您還不清楚按「... b4,d4,c4 ...」排序的數據的順序似乎違反了您指定的規則。 – digitaLink

+0

是的,它應該是一個隨機列表,當迭代和過濾時,它們被過濾的元素相對於彼此排序。例如,如果我與 每個迭代雖然在混洗: 如果每個[1] == '1': 打印(各) 我然後得到A1,B1,C1,D1,E1 ....不B1,A1或類似的東西。 –

回答

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'] 
相關問題