अजगर ३
for f, b in zip(foo, bar):
print(f, b)
zip
जब छोटा foo
या bar
बंद हो जाता है।
में अजगर 3 , zip
tuples के पुनरावर्तक, जैसे रिटर्न itertools.izip
को Python2 में। टुपल्स की एक सूची प्राप्त करने के लिए, का उपयोग करें list(zip(foo, bar))
। और जब तक दोनों पुनरावृत्तियाँ समाप्त नहीं हो जाती हैं, तब तक ज़िप करें, आप itertools.zip_longest का उपयोग
करेंगे ।
अजगर २
में अजगर 2 , zip
tuples की एक सूची देता है। यह ठीक है जब foo
औरbar
बड़े पैमाने पर नहीं हैं। यदि वे दोनों बड़े पैमाने पर हैं, तो गठन zip(foo,bar)
एक अनावश्यक रूप से बड़े पैमाने पर अस्थायी चर है, और इसके द्वारा प्रतिस्थापित किया जाना चाहिए itertools.izip
या
itertools.izip_longest
, जो सूची के बजाय एक पुनरावृत्त लौटाता है।
import itertools
for f,b in itertools.izip(foo,bar):
print(f,b)
for f,b in itertools.izip_longest(foo,bar):
print(f,b)
izip
foo
या तो bar
समाप्त हो जाता है या समाप्त हो जाता है।
izip_longest
दोनों रुक जाते हैं foo
और bar
थक जाते हैं। जब छोटे itter (s) समाप्त हो जाते हैं, izip_longest
तो एक tuple पैदावार करता हैNone
उस पुनरावृत्ति के अनुरूप स्थिति के करता है। तुम भी एक अलग सेट कर सकते हैं fillvalue
के अलावा None
यदि आप चाहें तो। पूरी कहानी के लिए यहाँ देखें ।
उस पर भी ध्यान दें zip
और इसके zip
समान प्रकार के ब्रेथेन्स मनमानी संख्या को पुनरावृत्तियों के रूप में स्वीकार कर सकते हैं। उदाहरण के लिए,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
प्रिंट
1 red manchego
2 blue stilton
3 green brie
izip
एक से अधिक क्यों पसंद करूंगा (भले हीizip
/zip
बहुत क्लीनर दिखता हो)?