अजगर ३
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)
izipfooया तो 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बहुत क्लीनर दिखता हो)?