Зацикливание списка списков и использование итератора
Итак, у меня есть следующий список списков:
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
Есть ли более чистый, более питонский способ сделать это? Что-то вроде zip(test, axis=0)
?
2 ответа
Решение
Вы можете использовать распаковку, чтобы передать список ваших входных данных zip
в качестве переменных аргументов:
for xyz in zip(*test):
print(*xyz)
(и вы можете сделать то же самое для координат x,y,z, чтобы передать print
)
Если вы используете 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
скорее всего, будет более эффективным, чем списки в целом