मेरे पास पूर्णांक की एक सूची है जो मैं for
लूप के माध्यम से चल रहा हूं यह पता लगाने के लिए कि क्या दो तत्व संयुक्त हैं एक अन्य चर t
के बराबर हैं। तो यदि t
10
के बराबर था और मेरे पास इंटरगर्स की एक सूची थी: l = [1,2,3,4,5,8,9]
, तो फ़ंक्शन को संख्या (1,9)
, (2,8)
के सभी अलग-अलग संयोजनों को मुद्रित करना चाहिए।मेरी सूची में लूप के लिए मेरा तत्व क्यों छोड़ रहा है?
मुझे लगता है कि मैं लगभग वहां हूं, लेकिन जब मैं .pop()
फ़ंक्शन का उपयोग करता हूं तो सूची में कुछ अजीब होता है। नीचे दिया गया कोड उन संख्याओं के सभी संयोजनों को दिखाने के लिए उपयोग किया जा रहा है जिन्हें गणना करने की आवश्यकता है, लेकिन सूची में मौजूद हर दूसरे तत्व को छोड़ दिया गया है।
1 2
1 5
1 8
1 13
1 15
1 26
1 38
5 5
5 8
5 13
5 15
5 26
5 38
13 8
13 13
13 15
13 26
13 38
26 13
26 15
26 26
26 38
सूचना कैसे 2
, 8
, 15
, और 38
को छोड़ दिया जाता है:
l = [1,2,5,8,13,15,26,38]
c = 10
for i in l:
first = i
l.pop(0)
for x in l:
second = x
print(first,second)
यहाँ उत्पादन होता है। मैं l.pop
का उपयोग कर रहा हूं ताकि दूसरा for
लूप मूल मान का उपयोग नहीं करेगा, और अगली पुनरावृत्ति सूची में अगले तत्व को फिर से चालू करने के लिए आगे बढ़ सकती है।
मैं निश्चित रूप से एक पायथन विशेषज्ञ नहीं हूं, लेकिन मैं आपको बता सकता हूं कि अन्य ऑब्जेक्ट उन्मुख भाषाओं में इसे आम तौर पर एक लूप के भीतर से एक पुनरावर्तक या संग्रह को संशोधित करने के लिए एक बहुत बुरा विचार माना जाता है। मेरा पहला संदेह यहां झूठ बोलता है। आप सूची से पॉप करते हैं और फिर दृश्यों के पीछे सूची [1] संदर्भित करने का प्रयास करते हैं ...लेकिन सूची [1] अब 5 है, 2 उम्मीद नहीं है, क्योंकि आपने सूची में संशोधन किया है। –
मुझे लगता है कि @ डेविडहोलेज़र को सही जवाब मिला। –
@AndrewRushton: यह एक कृत्रिम बाधा है ... आप सूची में उन तत्वों को सुरक्षित रूप से हटा सकते हैं जिन्हें आप वर्तमान में फिर से चालू कर रहे हैं यदि आप सूची में पीछे हटते हैं, हालांकि सूची की प्रतिलिपि पर फिर से सुरक्षित होना सुरक्षित है। बीटीडब्ल्यू '.pop (0)' बल्कि अक्षम है, क्योंकि यह सूची को सभी शेष सूची तत्वों को अंतर को भरने के लिए नीचे ले जाने के लिए मजबूर करता है। –