Подтвердить что ты не робот

В Python, Как присоединиться к списку кортежей в один список?

Следуя моему предыдущему вопросу Как группировать элементы списка в кортеж?

Если у меня есть список кортежей, например

a = [(1,3),(5,4)]

Как я могу распаковать кортежи и переформатировать его в один список

b = [1,3,5,4]

Я думаю, что это также связано с функцией iter, но я действительно не знаю, как это сделать. Пожалуйста, просветите меня.

4b9b3361

Ответ 1

b = [i for sub in a for i in sub]

Это сделает трюк.

Ответ 2

In [11]: list(itertools.chain(*a))
Out[11]: [1, 3, 5, 4]

Если вам просто нужно выполнить итерацию по 1, 3, 5, 4, вы можете избавиться от вызова list().

Ответ 3

import itertools
b = [i for i in itertools.chain(*[(1,3),(5,4)])]

Ответ 4

Другой способ:

a = [(1,3),(5,4)]
b = []

for i in a:
    for j in i:
        b.append(j)

print b

Это будет обрабатывать только кортежи внутри списка (a) tho. Вам нужно добавить инструкции if-else, если вы хотите также разобрать свободные переменные, например:

a = [(1,3),(5,4), 23, [21, 22], {'somevalue'}]
b = []

for i in a:
    if type(i) == (tuple) or type(i) == (list) or type(i) == (set):
        for j in i:
            b.append(j)
    else:
        b.append(i)

print b

Ответ 5

Просто перебирайте список a и распакуйте кортежи:

l = []
for x,y in a:
   l.append(x)
   l.append(y)