Python-嵌套列表的推導式

列表推導式的第一個表達式可以是任何表達式,包括另外一個列表推導式。
考慮下面的3×4矩陣的示例,其被實現爲長度爲4的3個列表的列表:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
#下面的列表推導式將轉置行和列:
new_list = [[n[i] for n in list] for i in range(4)]
print(new_list)
#輸出結果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

上面的例子等效於:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
li = []
for i in range(4):
    li.append([n[i] for n in list])
print(li)
#輸出結果:
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

內建函數複雜的流程句,zip()函數這個更容易實現:

list = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]
list(zip(*list))
輸出:
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章