Объединить несколько списков кортежей в новые списки кортежей по порядку кортежей в списке (python3) - PullRequest
0 голосов
/ 10 октября 2018

У меня есть несколько списков кортежей, содержащих два значения, например:

[('0','2'), ('0','2'), ('1','0')]
[('2','2'), ('0','0'), ('0','2')]
[('0','0'), ('2','1'), ('2','1')]
[('0','2'), ('2','0'), ('0','2')]

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

[('0','2'), ('2','2'), ('0','0'), ('0','2')]
[('0','2'), ('0','0'), ('2','1'), ('2','0')]
[('1','0'), ('0','2'), ('2','1'), ('0','2')] 

У меня возникают проблемы с размышлениями о том, как даже подойти к этой проблеме, потому что у кортежей нет уникальных значений ключа ,и фактические списки содержат около 500 кортежей каждый.Позиция в списке является важным качеством моей новой группировки.Каждый список находится в новой строке файла, если это помогает.

У кого-нибудь есть совет?

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Возможно, сделайте что-то подобное:

a = [[('0','2'), ('0','2'), ('1','0')],
    [('2','2'), ('0','0'), ('0','2')],
    [('0','0'), ('2','1'), ('2','1')],
    [('0','2'), ('2','0'), ('0','2')]]

res = list(map(list, (zip(*a))))
print(res)
0 голосов
/ 10 октября 2018

если для вывода в качестве списка кортежей не обязательно, вы также можете сделать это с помощью numpy:

import numpy as np
arr = np.transpose([[('0','2'), ('0','2'), ('1','0')],
                [('2','2'), ('0','0'), ('0','2')],
                [('0','0'), ('2','1'), ('2','1')],
                [('0','2'), ('2','0'), ('0','2')]], axes=[1,0,2])

он вернет 3D ndarray.

0 голосов
/ 10 октября 2018

Попробуйте это с помощью простого zip с *:

a = [
       [('0','2'), ('0','2'), ('1','0')],
       [('2','2'), ('0','0'), ('0','2')],
       [('0','0'), ('2','1'), ('2','1')],
       [('0','2'), ('2','0'), ('0','2')]
    ]


list(zip(*a))

Вывод будет:

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