зачем расширять список питонов - PullRequest
7 голосов
/ 08 января 2012

Зачем использовать расширение, если вы можете просто использовать оператор + =? Какой метод лучше? Также, каков наилучший способ объединения нескольких списков в один список

#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 ]

16 голосов
/ 08 января 2012

+= может использоваться только для расширения одного списка на другого списка , в то время как 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.

см. Создание простого списка из списка списков в Python

1 голос
/ 12 мая 2013

Вы можете extend() список python с объектом, не являющимся списком, в качестве итератора.Итератор не хранит какое-либо значение, а является объектом для итерации по некоторым значениям.Подробнее об итераторах здесь .

В этой теме есть примеры использования итератора в качестве аргумента метода extend(): добавление или расширение

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