как разложить вложенный список? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть вложенный список, и я хочу его разложить, ровно в обратном порядке от слияния.Предположим, у меня есть список ниже:

f=[[1,2,3],[1,2,3],[1,2,3],[1,2,3]]

Я пытаюсь получить:

a1=[1,1,1,1]
a2=[2,2,2,2]
a3=[3,3,3,3]

Я пробовал эту команду:

a1=f[:][0:1]
a2=f[:][1:2]
a3=f[:][2:3]

, но она не работаетправо.ты понимаешь, что я не прав?

Ответы [ 4 ]

0 голосов
/ 23 ноября 2018

Вы можете сделать это следующим образом:

a = [list(i) for i in zip(*f)]

Сейчас:

a[0] будет [1, 1, 1, 1]

a[1] будет [2, 2, 2, 2]

a[2] будет [3, 3, 3, 3]

0 голосов
/ 23 ноября 2018

zip () в сочетании с оператором * может использоваться для распаковки списка и возврата итератора кортежей.

Использование map () для применения list к итератору кортежей, который мы получаем из zip, и он возвращает итератор.И затем передача итератора в list () .

a = list(map(list, zip(*f)))

Или

a = []
for i in iter(map(list, zip(*f))):
    a.append(i)
0 голосов
/ 23 ноября 2018

Что вы должны сделать здесь, это использовать цикл for.

f=[[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
a1=[x[0] for x in f]
a2=[x[1] for x in f]
a3=[x[2] for x in f]
print(a1,a2,a3)

>>>[1, 1, 1, 1] [2, 2, 2, 2] [3, 3, 3, 3]
0 голосов
/ 23 ноября 2018

Попробуйте это:

f=[[1,2,3],[1,2,3],[1,2,3],[1,2,3]]

for i in zip(*f):
    print(i)

Вывод:

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