2014-07-25 270 views
0

什麼是重新排序格式的列表中選擇最Python的方式:大多數Python的方式重新排列重複列表

l = ['A1', 'A2', 'A3', 'A4', 
    'C1', 'C2', 'C3', 'C4', 
    'G1', 'G2', 'G3', 'G4', 
    'T1', 'T2', 'T3', 'T4'] 

要:

l = ['A1', 'C1', 'G1', 'T1', 
    'A2', 'C2', 'G2', 'T2', 
    'A3', 'C3', 'G3', 'T3', 
    'A4', 'C4', 'G4', 'T4'] 

我想出的最簡單的解決方法是l = l[::4] + l[1::4] + l[2::4] + l[3::4],但它似乎不是最乾淨的方式。

+0

這是關於對列表進行排序,還是關於列表中的矩陣轉置,當它以正確的方式分割時,看起來像是一個方形矩陣? – twalberg

+0

這是關於一個看起來像方矩陣的列表。 – Banana

回答

1

Python的排序是穩定的。所以,你可以對它進行排序基於第二個字符,這樣

print sorted(l, key=lambda item: item[1]) 

或就地排序,

l.sort(key=lambda item: item[1]) 

正如指出的「不確定是不是一個函數」的意見,如果該號碼部分有超過1個數字,那麼你可以做

print sorted(l, key=lambda item: int(item[1:])) 
+1

或'int(item [1:])'如果整數可以不只是一個字符。 –

1

您可以按每個字符串中的第二個字符排序列表。 Python排序是穩定的,因此具有相同第二個字符的元素將保持相同的順序。代碼爲:

l = sorted(l, key=lambda e: e[1]) 
1

以下將生成第二個列表,無論初始排序如何。

sorted(l, key=lambda item:item[::-1])