Есть ли способ сгладить несколько списков одновременно - PullRequest
0 голосов
/ 07 июня 2019

Рассмотрим следующие списки

list_1 = [[1,2],[3,4],[5,6]]
list_2 = [[7,8],[9,10],[11,12]]
list_3 = [[13,14],[15,16],[17,18]]

Можно ли сгладить все списки за один раз

я пытался использовать

list_1 = [ y for x in list_1 for y in x]

это делает только один список за один раз. Есть ли способ свести все три списка в одну строку кода?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Это легко сделать, используя itertools.chain()

itertools.chain(list1, list2, list3)

Если вас беспокоят только строки, то почему бы и нет:

list1, list2, list3 = ["A","B","C"], [1,2,3], ["E","F","G"]
0 голосов
/ 07 июня 2019

Если у вас есть список списков, чтобы сгладить, вы можете использовать цикл:

list_1 = [[1,2],[3,4],[5,6]]
list_2 = [[7,8],[9,10],[11,12]]
list_3 = [[13,14],[15,16],[17,18]]

lists = [list_1, list_2, list_3]

def flatten(lst):
    ...

lists = [flatten(lst) for lst in lists]

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

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