zip 2D массив для параллельной итерации - PullRequest
0 голосов
/ 25 февраля 2020

Если у меня есть следующий список списка:

x = [['a','b'],
     ['c','d'],
     ['e','f']]

Я бы хотел иметь возможность сжать два элемента каждого списка.

В данный момент я использую это решение:

for i,j in zip(*list(map(list, zip(*x)))):               #(zip(*transpose(x)))
  print('{},{}'.format(i,j))

И я получаю следующий вывод:

a,b
c,d
e,f

Но это выглядит излишне сложно. Есть ли более простое решение?

Я не использую что-то вроде этого:

for row in x:
  print('{},{}'.format(row[0],row[1]))

Поскольку каждый столбец соответствует определенным c вещам, и я хотел бы иметь возможность назвать это две вещи: for food, price in zip(x): ...

1 Ответ

3 голосов
/ 25 февраля 2020

Это просто:

for i, j in x:
  print('{},{}'.format(i, j))

Вам вообще не нужен почтовый индекс. For-l oop уже распакует ваш 2-массив в i и j.

Это похоже на i, j = [1, 2]; Python автоматически распаковывает итерируемое в переменные для вас. Здесь работает не zip, zip просто объединяет массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...