@pypyshka

Как из списка кортежей получить список?

Добрый день.
Подскажите, пожалуйста, как из списка кортежей a = [('1'), ('2')], получить просто список ['1', '2']?
  • Вопрос задан
  • 707 просмотров
Решения вопроса 2
kentuck1213
@kentuck1213
a = [('1',), ('2',)]
a = [i[0] for i in a]
Ответ написан
DDDsa
@DDDsa
a = [('1', '2', '3'), ('a', 'b', 'c'), ('I', 'II', 'III')]
result = []
for i in a:
    result.extend(i)

print(result)
>>> ['1', '2', '3', 'a', 'b', 'c', 'I', 'II', 'III']

Вместо result.extend(i) можно написать просто result += i

Вот еще красивое через list comprehension:
a = [('1', '2', '3'), ('a', 'b', 'c'), ('I', 'II', 'III')]
result = [j for i in a for j in i]

print(result)
>>> ['1', '2', '3', 'a', 'b', 'c', 'I', 'II', 'III']


А то, что вы отметили как решение, берет только первый элемент из каждого кортежа
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Kevin1
>>> print lst
[(1, 2), (3, 4)]
>>> list(sum(lst, ()))
[1, 2, 3, 4]
Ответ написан
Комментировать
@deliro
А теперь правильный вариант:
from itertools import chain
a = [('1',), ('2',)]
chain(*a)  # Вернёт генератор, без необходимости выделять память под весь список
list(chain(*a))  # Если очень нужен список (скорее всего, это не так)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы