使用 Python,假設我有三個這樣的串列:
list1 = ["ABC","JKL","STU"]
list2 = ["DEF", "MNO", "VWX"]
list3 = ["GHI", "PQR", "YZ0"]
我想回圈串列,以便結果是這樣的串列:
result = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZ0"]
我可以通過一個簡單的 for 回圈使其作業:
result = []
for i in range(3):
result.append(list1[i])
result.append(list2[i])
result.append(list3[i])
因為我想使用這種方法的專案包括比三個多得多的串列,所以我想使用更復雜的方法。我嘗試使用itertools.chain()函式,但它在移動到下一個串列之前分別回圈每個串列:
result = []
for i in itertools.chain(list1, list2, list3):
result.append(i)
有沒有辦法讓它itertools.chain()與其他功能一起作業?
uj5u.com熱心網友回復:
利用 numpy.hstack
import numpy as np
list1 = ["ABC","JKL","STU"]
list2 = ["DEF", "MNO", "VWX"]
list3 = ["GHI", "PQR", "YZ0"]
np.hstack([list1, list2, list3])
# -> array(['ABC', 'JKL', 'STU', 'DEF', 'MNO', 'VWX', 'GHI', 'PQR', 'YZ0'], dtype='<U3')
uj5u.com熱心網友回復:
你可以試試
result = sum((list(e) for e in zip(list1, list2, list3)), [])
不是最漂亮的方式。還在玩。問題是, zip 回傳元組,它們不能直接總結。e因此,從元組轉換為串列的額外生成器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420236.html
標籤:
