2012-01-08 22 views
7

का विस्तार क्यों करें जब आप + = ऑपरेटर का उपयोग कर सकते हैं तो विस्तार का उपयोग क्यों करें? कौन सी विधि सबसे अच्छी है? इसके अलावा क्या एक सूची में एकाधिक सूचियों में शामिल होने के लिए सबसे अच्छा तरीका हैक्यों एक पायथन सूची

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

उत्तर

16

+= केवल एक और सूची, से एक सूची का विस्तार करने extendएक iterable वस्तु से एक सूची का विस्तार करने के लिए इस्तेमाल किया जा सकता है, जबकि इस्तेमाल किया जा सकता

उदाहरण

आप

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. 

Making a flat list out of list of lists in Python

+0

धन्यवाद! वह बहुत ज्यादा नाखून है। _list + = सूची (_iterable) बराबर है? –

+1

एक ही परिणाम प्राप्त कर सकते हैं, लेकिन अंतर्निहित कार्यान्वयन अलग होगा। – qiao

1

आप extend() हो सकता है एक पाइथो देखें एक गैर-सूची ऑब्जेक्ट के साथ एक पुनरावर्तक के रूप में एन सूची। एक पुनरावर्तक किसी भी मूल्य को संग्रहीत नहीं कर रहा है, लेकिन एक वस्तु कुछ मूल्यों पर एक बार फिर से शुरू करने के लिए है। इटरेटर here पर अधिक।

इस सूत्र में, वहाँ जहां पुनरावर्तक extend() विधि का एक तर्क के रूप में किया जाता है उदाहरण हैं: append vs. extend

संबंधित मुद्दे