यह zip
के लिए एक बहुत अच्छा उपयोग केस है।
>>> list1 = [1,2,3,4,5]
>>> list2 = [1,1,1,4,1]
>>> list3 = [1,22,3,1,5]
>>> list4 = [1,2,5,4,5]
>>> [sum(x) for x in zip(list1, list2, list3, list4)]
[4, 27, 12, 13, 16]
या आप अलग-अलग सूचियों के बजाय सूचियों की एक सूची के रूप में अपने डेटा है तो:
>>> data = [[1,2,3,4,5], [1,1,1,4,1], [1,22,3,1,5], [1,2,5,4,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27, 12, 13, 16]
इसी तरह, अगर आप सूचियों का एक dict
के रूप में अपने डेटा स्टोर, आप के लिए dict.itervalues()
या dict.values()
उपयोग कर सकते हैं सूची मूल्यों को पुनः प्राप्त और उपयोग करें कि इसी तरह से:
>>> data = {"a":[1,2,3], "b":[3,4,4]}
>>> [sum(x) for x in zip(*data.itervalues())]
[4, 6, 7]
ध्यान दें कि यदि आपकी सूचियां असमान लंबाई के हैं, zip
सबसे छोटी सूची की लंबाई तक काम करेगी। उदाहरण के लिए:
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in zip(*data)]
[4, 27]
आप एक परिणाम है कि सभी डेटा शामिल हैं पाने के लिए चाहते हैं, आप itertools.izip_longest
उपयोग कर सकते हैं (एक उपयुक्त fillvalue
के साथ)। उदाहरण:
>>> data = [[1,2,3,4,5], [1,1], [1,22], [1,2,5]]
>>> [sum(x) for x in izip_longest(*data, fillvalue=0)]
[4, 27, 8, 4, 5]
पहले, 100 'list1' नामित चरों का निर्माण नहीं करतीं ...; सूचियों की एक सूची का उपयोग करें। – geoffspear