def partition(n, iterable):
p = izip_longest(*([iter(iterable)] * n))
r = []
for x in p:
print(x) #I added this
s = set(x)
s.discard(None)
r.append(list(s))
return r
यह वास्तव में एसओ पर नौकरी पोस्ट करने और नौसिखिया होने पर मुझे लगता है कि यह दिलचस्प था। तो अगर आप की तरह आउटपुट प्राप्त निम्नलिखित:यह फ़ंक्शन क्या करता है? (पायथन इटरेटर्स)
partition(5, L)
(1, 2, 3, 4, None)
Out[86]: [[1, 2, 3, 4]]
मुझे इस के लिए पहले से ही भ्रमित क्योंकि मैंने सोचा izip_longest(*([iter(iterable)] * n))
n समान iterators की एक सूची पर izip_longest
समारोह चल पाएंगे तो मैं पहले (1,1,1,1,1)
और फिर एक का उत्पादन की उम्मीद है | है (2,2,2,2,2)
और इतने पर आउटपुट।
मेरे सवाल का तो लघु संस्करण, है क्या पर इस लाइन के साथ जा रहा है:
p = izip_longest(*([iter(iterable)] * n))
यह पार्स मैं सोचा होगा [आईटीईआर (iterable)] * n समान iterables की लंबाई n सभी की एक सूची बनाता है एक ही बात की ओर इशारा करते हुए - यह कमांड लाइन पर यही करता है, लेकिन यह उपरोक्त मुद्रित आउटपुट के आधार पर ऐसा नहीं लगता है।
इसके अलावा मैंने सोचा कि * शुरुआत में * ...longest(*...
सूची अज्ञात लंबाई की है, लेकिन मुझे नहीं लगता कि पूरी तरह से समझ में आता है। फ़ंक्शन कॉल के अंदर ऐसा पहला *
प्रतीक क्या है? ऐसा प्रतीत नहीं होता है कि यह तर्कों की अज्ञात लंबाई सूची को इंगित करता है ...
तो दिन के अंत में मैं पूरी तरह से खो गया हूं। क्या कोई मुझे इस वाक्यविन्यास के माध्यम से चल सकता है?
धन्यवाद किसी भी इनपुट के लिए बहुत कुछ!
सभी सहायक उत्तरों के लिए धन्यवाद, हर कोई। मुझे यकीन नहीं है कि क्या मैं यहां किसी उत्तर या प्रश्न पर काम कर रहा हूं, लेकिन ऐसा लगता है कि यह सूची समझ सूचियों और टुपल्स के लिए एक ही काम करेगी (मुझे एहसास है कि यह भी शब्दकोशकारियों, कस्टम वर्गों, अन्य चीजों पर लागू होगा .. ।)
[L[i*n:(i+1)*n] for i in range(int(ceil(len(L)/float(n)))) ]
आप पढ़ सकते हैं [कैसे 'जिप (* [आईटीईआर (रों)] * एन)' पायथन में काम] (http://stackoverflow.com/questions/2233204/how- करता है-zipitersn-कार्य में अजगर)? –
यह एन आकार की छोटी सूचियों में एक बड़ी सूची तोड़ता है .... इस घटना में कोई भी नहीं भर रहा है कि सूची की लंबाई एन द्वारा समान रूप से विभाजित नहीं है ... केवल एक ही उपन्यास जिसमें कोई भी 'कोई नहीं' होना चाहिए अंतिम सूची –
जोड़ें 'izip_longest()' क्या किया गया यह देखने के लिए 'प्रिंट (सूची (पी))'। – martineau