Можно сразу добавить несколько списков? (Python) - программирование

Можно сразу добавить несколько списков? (Python)

У меня есть список списков, которые я хочу добавить в один список, который является своего рода "основным" списком в программе, которую я пытаюсь написать. Есть ли способ сделать это в одной строке кода, а не как 10? Я новичок, поэтому понятия не имею...

Для лучшей картины моего вопроса, что, если бы у меня были эти списки:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]

И хочу добавить y и z в x. Вместо этого:

x.append(y)
x.append(z)

Есть ли способ сделать это в одной строке кода? Я уже пробовал:

x.append(y, z)

И это не сработает.

4b9b3361

Ответ 1

x.extend(y+z)

должен делать то, что вы хотите

или

x += y+z

или даже

x = x+y+z

Ответ 2

Расширение моего комментария

In [1]: x = [1, 2, 3]
In [2]: y = [4, 5, 6]
In [3]: z = [7, 8, 9]
In [4]: from itertools import chain
In [5]: print list(chain(x,y,z))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Ответ 3

Вы можете использовать функцию sum с указанием начального значения (пустой список):

a = sum([x, y, z], [])

Это особенно подходит, если вы хотите добавить произвольное количество списков.

Ответ 4

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

my_map = {
   'foo': ['a', 1, 2],
   'bar': ['b', '2', 'c'],
   'baz': ['d', 'e', 'f'],
} 
list(itertools.chain(*my_map.values()))
['d', 'e', 'f', 'a', 1, 2, 'b', '2', 'c']

в приведенном выше выражении * важно для результата groking как args для цепочки, это то же самое, что и предыдущая цепочка (x, y, z). Также обратите внимание, что результат hash-упорядочен.