में एक सूची में मौजूद है या नहीं, मैं एक पायथन कोड लिख रहा हूं जहां मैं सूची में नंबर जोड़ रहा हूं, लेकिन मैं नहीं चाहता कि सूची में संख्या दोहराने के लिए। तो list.append()
करने से पहले, मैं कैसे जांच सकता हूं कि सूची में कोई संख्या पहले से मौजूद है या नहीं?जांचें कि क्या कोई संख्या पहले से ही पाइथन
उत्तर
आप
if item not in mylist:
mylist.append(item)
कर सकता है लेकिन क्या तुम सच में इस तरह एक सेट है, का उपयोग करना चाहिए:
myset = set()
myset.add(item)
संपादित करें: हैं क्रम महत्वपूर्ण है लेकिन आपकी सूची बहुत बड़ी है, तो आप शायद चाहिए एक सूची और दोनों सेट का उपयोग करें, जैसे:
mylist = []
myset = set()
for item in ...:
if item not in myset:
mylist.append(item)
myset.add(item)
इस तरह, आप तत्व अस्तित्व के लिए तेज़ लुकअप प्राप्त करते हैं, लेकिन आप अपना ऑर्डरिंग रखते हैं। यदि आप निष्पक्ष समाधान का उपयोग करते हैं, तो आपको लुकअप के लिए ओ (एन) प्रदर्शन मिलेगा, और यदि आपकी सूची बड़ी है तो
या, जैसा कि @ लार्समैन ने इंगित किया है, आप ऑर्डर्ड डिक्ट का उपयोग उसी प्रभाव से कर सकते हैं:
from collections import OrderedDict
mydict = OrderedDict()
for item in ...:
mydict[item] = True
'सेट' के लिए 'एपेंड' जैसी कोई विधि नहीं है। आप निश्चित रूप से 'add' मतलब था। –
फिर से, सेट * ऑर्डरलेस * हैं, इसलिए यह बराबर नहीं है। –
धन्यवाद, –
आप अपनी सूची में अद्वितीय तत्व करना चाहते हैं, तो क्यों एक सेट का उपयोग नहीं, निश्चित रूप से अगर, ताकि आप के लिए कोई प्रभाव नहीं पड़ेगा: -
>>> s = set()
>>> s.add(2)
>>> s.add(4)
>>> s.add(5)
>>> s.add(2)
>>> s
39: set([2, 4, 5])
हैं क्रम चिंता का विषय है, तो आप उपयोग कर सकते हैं: -
>>> def addUnique(l, num):
... if num not in l:
... l.append(num)
...
... return l
तुम भी एक OrderedSet
नुस्खा है, जो Python Documentation
ध्यान दें कि यदि आदेश महत्वपूर्ण है तो यह काम नहीं करेगा। –
@ लैटवेयर .. बेशक। उस बिंदु जोड़ा गया। –
इसलिए यदि मैं संख्याओं को आरोही क्रमबद्ध करना चाहता हूं, तो मुझे ऐसा करना होगा? क्या आप उस हिस्से को थोड़ा और समझा सकते हैं? (हाँ मुझे ऑर्डर करने वाला सेट होना है) – PhoonOne
में आप शायद एक सेट वस्तु के बजाय इस्तेमाल कर सकते हैं कहा जाता है पा सकते हैं। बस सेट करने के लिए add
नंबर। वे स्वाभाविक रूप से दोहराना नहीं करते हैं।
यदि आप अपनी संख्या आरोही क्रम में चाहते हैं तो आप उन्हें एक सेट में जोड़ सकते हैं और फिर सेट को आरोही सूची में सॉर्ट कर सकते हैं।
s = set()
if number1 not in s:
s.add(number1)
if number2 not in s:
s.add(number2)
...
s = sorted(s) #Now a list in ascending order
- 1. जांचें कि कोई संख्या पाइथन
- 2. जांचें कि क्या पाइथन
- 3. जांचें कि कोई स्थिर पहले से ही परिभाषित है
- 4. जांचें कि क्या एक कैलियर पहले से ही एक sublayer
- 5. जांचें कि फ़ाइल पहले से ही स्रोत नियंत्रण में है
- 6. जांचें कि पहले पुश
- 7. जांचें कि पथ पाइथन
- 8. जांचें कि क्या स्ट्रिंग में संख्या
- 9. जांचें कि फ़ाइल पाइथन
- 10. जांचें कि क्या पाइथन (लिनक्स/यूनिक्स में)
- 11. जांचें कि पाइथन
- 12. जांचें कि क्या पाइथन पैकेज स्थापित है
- 13. जांचें कि क्या पाइथन int फ्लोट
- 14. जांचें कि क्या GoogleMap कैनवास तत्व पहले से निष्क्रिय है
- 15. जांचें कि फ़ाइल में पाइथन
- 16. जांचें कि क्या पर्यावरण चर पहले से सेट है
- 17. सी # जांचें कि क्या एक COM (सीरियल) पोर्ट पहले से ही खुला है
- 18. जांचें कि कोई मान LINQ
- 19. जांचें कि कोई पैरामीटर पाइथन मॉड्यूल है या नहीं?
- 20. जांचें कि क्या फ़ाइल पहले से ही झुंड() का उपयोग कर बंद कर दी गई है?
- 21. जांचें कि कोई सूची है
- 22. जांचें कि क्या सूची में पहले से कोई आइटम है या नहीं?
- 23. जांचें कि कोई ऑब्जेक्ट
- 24. पीएचपी सत्र कि पहले से ही
- 25. जांचें कि कोई निर्देशिका ज़िप फ़ाइल में पाइथन
- 26. यह जांचना कि क्या उपयोगकर्ता पहले से ही ड्रूपल
- 27. कैसे जांचें कि कोई चर पहले ही घोषित किया गया है (टी-एसक्यूएल)?
- 28. जांचें कि क्या कोई ऑब्जेक्ट VBScript
- 29. पायथन: `प्रकार है कि पहले से ही reducers
- 30. जांचें कि क्या पाइथन में बड़ी सूची बदल गई है
क्यों न केवल 'सेट' का उपयोग करें? – loganfsmyth