Ответ 1
x.extend(y+z)
должен делать то, что вы хотите
или
x += y+z
или даже
x = x+y+z
У меня есть список списков, которые я хочу добавить в один список, который является своего рода "основным" списком в программе, которую я пытаюсь написать. Есть ли способ сделать это в одной строке кода, а не как 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)
И это не сработает.
x.extend(y+z)
должен делать то, что вы хотите
или
x += y+z
или даже
x = x+y+z
Расширение моего комментария
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]
Вы можете использовать функцию sum
с указанием начального значения (пустой список):
a = sum([x, y, z], [])
Это особенно подходит, если вы хотите добавить произвольное количество списков.
эквивалентный вышеприведенному ответу, но достаточно разный, чтобы заслужить упоминания:
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-упорядочен.