2017-04-30 44 views
1

我有兩個列表,如:設置列表的正確排序

>> K = 3 
>> ll_G = ['GIO_%s' % (k) for k in range(K)] 
>> ll_P = ['PAX_%s' % (k) for k in range(K)] 
>> ll_GP = ll_G + ll_P 
>> ll_GP 
['GIO_0', 'GIO_1', 'GIO_2', 'PAX_0', 'PAX_1', 'PAX_2'] 

我要訂購最終名單,例如有:

['GIO_0', 'PAX_0', 'GIO_1', 'PAX_1', 'GIO_2', 'PAX_2'] 

我想這可能是相當簡單:如何我可不可以做?

+0

第一步:指定你想要的。除非確切的清單總是存在。但是你已經擁有它了。 –

回答

2

我有兩個表像

爲什麼不乾脆直接建立所需的列表?

>>> K = 3 
>>> [s % k for k in range(K) for s in ('GIO_%s', 'PAX_%s')] 
['GIO_0', 'PAX_0', 'GIO_1', 'PAX_1', 'GIO_2', 'PAX_2'] 
2

你可以做到以下幾點:

ll_GP.sort(key = lambda x: x[-1]) 
1

您可以通過最後一個符號進行排序:

sorted(abc, key=lambda x: int(re.findall(r'\d+$', x)[0])) 

int(re.findall(r'\d+$', x)[0])發生在年底的數量和使用他們的整數表示作爲比較的關鍵。

+0

一個非常好的解決方案,但它不適用於$ K> 10 $。 –

2

你需要循環在兩個基地名單,並添加元素,最終名單以交替的方式即是這樣的

for i in range(len(11_G)): 
    11_GP.append(11_G[i]) 
    11_GP.append(11_P[i])