python - How to insert None into a list? -


चालू

  एल = [1,2,3,4,5,6] प्रिंट ज़िप (एल, एल [1:]) [:: 2]  

  [(1, 2), (3, 4), [5, 6]]  

क्या ज़िप (या अन्य) कथन का बजाय

  [1, 2, कोई भी नहीं, 3, 4, कोई नहीं, 5, 6, कोई नहीं]  

?

अपडेट

इसे शुरू करने के लिए बिल्कुल सही है

<पूर्व> एल = [(1,2), (3,4), (5,6)]

इतने लंबे समय के रूप में बयान एक (तेज) एक रहता है

Update2

डालने का एक उपयोग का मामला कोई भी नहीं है।

आप ऐसा कुछ कर सकते हैं:

  & gt; & gt; & gt; एल = [1,2,3,4,5,6]> gt; & gt; & gt; यह = ज़िप (* [आईटर (एल)] * 2)> gt; & gt; & gt; [Y के लिए एक्स में x + (कोई भी नहीं)] [1, 2, कोई नहीं, 3, 4, कोई नहीं, 5, 6, कोई नहीं]  

प्रदर्शन और स्थान की जटिलता बुद्धिमान @ एमजील्सन का दृष्टिकोण यदि संशोधित किया जाता है तो वह बहुत ही बेहतरीन है:

  & gt; & gt; & gt; इटेटटोल्स से इजीपी आयात, चेन और gt; & gt; & gt; एल = [1,2,3,4,5,6] * 10 ** 5 & gt; & gt; & gt; X + (कोई भी नहीं)] में 10 मिनट के लिए एक्स (+ [आईएआर (एल)] * 2) में एक्स के लिए [समय के लिए [वाई के एक्स] (अधिकतम) 3: 47.2 एमएस प्रति लूप  
<पी > यदि हम सूची-समझ को हटा देते हैं और itertools.chain.from_iterable का उपयोग करते हैं, तो आप देख सकते हैं कि एक महत्वपूर्ण सुधार है:

  & gt; & gt; & gt; Izip (* [iter (L)] * 2)) में एक्स के लिए% समय सूची (चेन.फ्रेम_सनीय (एक्स + (कोई नहीं)) 10 loops, सबसे अच्छा 3: 31.8 एमएस प्रति लूप & gt; & gt; & gt; % Timeit सूची (insert_none_while (एल)) # एमजील्सन के दृष्टिकोण 10 छोरों, सबसे अच्छा 3: 50.7 एमएस प्रति लूप & gt; & gt; & gt; % Timeit list (insert_none_for (L)) 10 loops, सबसे अच्छा 3: 32.6 एमएस प्रति लूप  

यहाँ insert_none_while है @ mgilson का मूल कोड और insert_none_for है:

<प्री> def insert_none_for (iterable): इसे = iter (iterable) इसमें x: उपज एक्स उपज अगले (यह) उपज कोई भी

अद्यतन

@Padraic कनिंघम के प्रस्तावित समाधान का एक थोड़ा संशोधित संस्करण सबसे तेज (केवल itertools.izip के साथ प्रयोग किया जाता है @Jochen Ritzel समाधान की तुलना में थोड़ा सा मार्जिन द्वारा किया जाता है ):

  & gt; & gt; & gt; एल = [1,2,3,4,5,6] * 10 ** 6 & gt; & gt; & gt; X + (कोई नहीं), 1 छोरों में वाई के लिए (* [yer (* [iter (L)] * 2) में एक्स के लिए समय समय [वाई के लिए, अधिकतम 3: 541 एमएस प्रति लूप & gt; & gt; & gt; Izip (* [iter (L)] * 2)) में 1 के लिए% समय की सूची (x + (कोई नहीं), 1 लूप, सबसे अच्छा 3: 34 9 एमएस प्रति लूप # का उपयोग करते समय 1 और कैश्ड अगले फ़ंक्शन & gt; & gt; & gt; % Timeit सूची (insert_none_while_one (L)) 1 छोरों, सबसे अच्छा 3: 470 एमएस प्रति पाश # कैश्ड अगले फ़ंक्शन & gt; & gt; & gt; % Timeit सूची (insert_none_for (L)) 1 छोरों, सबसे अच्छा 3: 351 एमएस प्रति लूप # जोकेन रिट्जेल का मूल समाधान & gt; & gt; & gt; % Timeit it = iter (L); सूची (itertools.chain.from_iterable (ज़िप, यह, दोहराना (कोई नहीं))) 1 छोरों, सबसे अच्छा 3: 352 एमएस प्रति पाश # झेप & gt; & gt; & gt; का उपयोग करते हुए जोकेन रिट्जल के समाधान % Timeit it = iter (L); सूची (आईटीरोलॉल्स.चैन.फ्रेम_इटेरेबल (izip (यह, यह, दोहराएँ (कोई नहीं))) 10 छोरों, 3: 167 एमएस प्रति लूप # पैड्रिक कनिंघम के समाधान का उपयोग करके स्लेटिंग & gt; & gt; & gt; % Timeit सूची (श्रृंखला [fr 2], एल [1 :: 2], [कोई नहीं]))) 1 छोरों, सबसे अच्छा 3: 236 एमएस प्रति पाश # पैड्रिक कनिंघम का समाधान आईटीआरए & gt; & gt; & gt; % Timeit it = iter (L); सूची (श्रृंखला.फ्रेम_इन्टेबल (izip_longest (यह, यह, [])) 10 छोरों, सबसे अच्छा 3: 156 एमएस प्रति लूप # कसरा & gt; & gt; & gt; % (लिन (एल), 2)])) 1 छोरों, सबसे अच्छा 3: 1.43 s प्रति लूप <% के लिए% timeit सूची (श्रृंखला (* [एल [i: i + 2] + [कोई नहीं]   

अभी भी पर्याप्त नहीं है?

NumPy arrays का उपयोग करने पर विचार करें:

  & gt; & gt; & gt; Arr = np.array (एल, dtype = float)> gt; & gt; & gt; Arr.size 6000000 & gt; & gt; & gt; % Timeit np.insert (arr.reshape (-1, 2), 2, कोई नहीं, धुरी = 1)। Travel () 10 loops, सबसे अच्छा 3: 80.8 एमएस प्रति लूप  

संबंधित:


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -