2017-04-25 106 views
1

所以我有以下列出的清單:遍歷列表的列表,並使用第i個迭代器

test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

我想環路i個元素在在內部列表。我可以通過使用zip做到這一點:

for x, y, z in zip(test[0], test[1], test[2]): 
    print(x, y, z) 

將返回:

1 4 7 
2 5 8 
3 6 9 

是否有一個更清潔,更Python的方式來做到這一點?像zip(test, axis=0)

+4

'爲X,Y,Z的zip(*測試) :' –

回答

4

您可以使用解包來傳遞輸入的子列表到zip可變參數:

for xyz in zip(*test): 
    print(*xyz) 

(你可以做同樣的X,Y,Z COORDS通過PARAMS到print

+0

這正是我所期待的。謝謝! – u2berggeist

0

如果使用numpy.array你可以簡單地使用數組的transpose和遍歷行

>>> import numpy as np 
>>> test = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
>>> t = np.array(test) 
>>> t 
array([[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]) 

然後遍歷

for row in t.T: 
    print(row) 

[1 4 7] 
[2 5 8] 
[3 6 9] 

取決於你打算做什麼,numpy很可能會比列表解析更有效

+0

主要問題在於獲取單個值到各自的變量而不是打印。雖然謝謝! – u2berggeist