मेरे पास list
अजगर में फिल्नामें हैं और मैं set
सभी फिल्नामों का निर्माण करना चाहूंगा ।
filelist=[]
for filename in filelist:
set(filename)
इससे काम नहीं लगता है। यह कैसे कर सकते हैं?
मेरे पास list
अजगर में फिल्नामें हैं और मैं set
सभी फिल्नामों का निर्माण करना चाहूंगा ।
filelist=[]
for filename in filelist:
set(filename)
इससे काम नहीं लगता है। यह कैसे कर सकते हैं?
जवाबों:
यदि आपके पास हैशनेबल ऑब्जेक्ट्स की सूची है (फ़ाइल नाम शायद स्ट्रिंग्स होंगे, इसलिए उन्हें गिनना चाहिए):
lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]
आप सीधे सेट का निर्माण कर सकते हैं:
s = set(lst)
वास्तव में, किसी भी चलने योग्य वस्तु केset
साथ इस तरह काम करेगा ! (महान टाइपिंग बतख नहीं है?)
यदि आप इसे पुनरावृत्त करना चाहते हैं:
s = set()
for item in iterable:
s.add(item)
लेकिन इस तरह से करने की आवश्यकता शायद ही हो। मैं केवल इसका उल्लेख करता हूं क्योंकि set.add
विधि काफी उपयोगी है।
y = set(x)
सबसे प्रत्यक्ष समाधान यह है:
s = set(filelist)
आपके मूल कोड में समस्या यह है कि मान सेट पर असाइन नहीं किए जा रहे थे । यहाँ आपके कोड का निश्चित संस्करण है:
s = set()
for filename in filelist:
s.add(filename)
print(s)
तुम कर सकते हो
my_set = set(my_list)
या, पायथन 3 के लिए,
my_set = {*my_list}
एक सूची से एक सेट बनाने के लिए। इसके विपरीत, आप भी कर सकते हैं
my_list = list(my_set)
या, पायथन 3 के लिए,
my_list = [*my_set]
एक सेट से एक सूची बनाने के लिए।
बस ध्यान दें कि सूची में तत्वों का क्रम आम तौर पर तब खो जाता है जब सूची को सेट में परिवर्तित किया जाता है क्योंकि एक सेट स्वाभाविक रूप से अनियंत्रित होता है। (हालांकि, CPython में एक अपवाद यह प्रतीत होता है कि सूची में केवल गैर-नकारात्मक पूर्णांक होते हैं, लेकिन मुझे लगता है कि यह CPython में सेट के कार्यान्वयन का परिणाम है और यह व्यवहार अलग-अलग पायथन कार्यान्वयनों के बीच भिन्न हो सकता है।)