зачем расширять список python
Зачем использовать extend, если можно просто использовать оператор+=? Какой метод лучше? Кроме того, как лучше всего объединить несколько списков в один список
#my prefered way
_list=[1,2,3]
_list+=[4,5,6]
print _list
#[1, 2, 3, 4, 5, 6]
#why use extend:
_list=[1,2,3]
_list.extend([4,5,6])
print _list
#[1, 2, 3, 4, 5, 6]
_lists=[range(3*i,3*i+3) for i in range(3)]
#[[0, 1, 2], [3, 4, 5], [6, 7, 8]]
#my prefered way of merging lists
print sum(_lists,[])
#[0, 1, 2, 3, 4, 5, 6, 7, 8]
#is there a better way?
from itertools import chain
print list(chain(*_lists))
#[0, 1, 2, 3, 4, 5, 6, 7, 8]
2 ответа:
+=
может использоваться только для расширения одного списка другим списком , в то время какextend
может использоваться для расширения одного списка итерационным объектомНапример
Вы можете сделать
a = [1,2,3] a.extend(set([4,5,6]))
Но вы не можете сделать
a = [1,2,3] a += set([4,5,6])
По второму вопросу
[item for sublist in l for item in sublist] is faster.
Вы можете
extend()
список python с объектом non-list в качестве итератора. Итератор-это не хранение какого-либо значения, а объект для однократной итерации по некоторым значениям. Подробнее об итераторах здесь .В этом потоке есть примеры, когда итератор используется в качестве аргумента метода
extend()
: append vs extend