पायथन में एक सेट को आरंभीकृत करने के लिए घुंघराले ब्रेसिज़ का उपयोग करें


98

मैं अजगर सीख रहा हूं, और मेरे पास सेटों को शुरू करने के बारे में एक नौसिखिया सवाल है। परीक्षण के माध्यम से, मैंने पाया है कि एक सेट को इस तरह शुरू किया जा सकता है:

my_set = {'foo', 'bar', 'baz'}

क्या इस तरह से करने के कोई नुकसान हैं, मानक तरीके के विपरीत:

my_set = set(['foo', 'bar', 'baz'])

या यह सिर्फ शैली का सवाल है?


2
दस्तावेज़ीकरण इसका उल्लेख करता है, बस वहां नहीं। ध्यान दें कि यह एक पदावनत मॉड्यूल के लिए प्रलेखन है, असली सेट अब बिलिन हैं। यह "व्हाट्स न्यू इन पायथन 2.7" डॉक्यूमेंट में है, और भाषा संदर्भ संक्षेप में इसका वर्णन करता है: docs.python.org/2/reference/expressions.html#set-displays

@ डायलेन मैं अजगर 2.7 का उपयोग करता हूं, इसलिए मैंने अजगर 3 डॉक्स में देखने के लिए नहीं सोचा था। मैंने जो लिंक पोस्ट किया है वह 2.7 के लिए है, लेकिन यह अजीब बात नहीं है।
fvrghl

1
जब से मैंने अपनी टिप्पणी संपादित की है, 2.7 डॉक्स ने भी इसका उल्लेख किया है। आपके द्वारा पोस्ट किया गया लिंक पुराना है, अतीत का एक अवशेष, गलत, पदावनत। भूल जाइए कि यह मौजूद है और इसका उपयोग आप स्वयं के बजाय इसका उपयोग करने के लिए कहते हैं: docs.python.org/2/library/stdtypes.html#set और docs.python.org/2/library/stdtypes.html#lrozenset

@delnan मेरी मदद करने के लिए धन्यवाद। मैंने प्रश्न को संपादित किया ताकि मैं अब यह न कहूं कि इसके लिए कोई दस्तावेज नहीं है (हालांकि इस ऑनलाइन उल्लेख करने वाले कुछ उदाहरण हैं)।
fvrghl

राहगीर के लिए: Pycharm एक फ़ंक्शन कॉल का उपयोग करने के खिलाफ चेतावनी देता है जब कोई शाब्दिक उपयोग कर सकता है - प्रदर्शन के कारण हो सकते हैं - इसलिए नए कोड में सेट शाब्दिक तरीका पसंद करते हैं
Mr_and_Mrs_D

जवाबों:


102

सेट शाब्दिक सिंटैक्स के साथ दो स्पष्ट मुद्दे हैं:

my_set = {'foo', 'bar', 'baz'}
  1. यह पायथन 2.7 से पहले उपलब्ध नहीं है

  2. उस सिंटैक्स का उपयोग करके एक खाली सेट व्यक्त करने का कोई तरीका नहीं है ( {}एक खाली ताना बनाता है)

वे आपके लिए महत्वपूर्ण हो सकते हैं या नहीं।

इस वाक्यविन्यास को रेखांकित करने वाले डॉक्स का खंड यहां है


46

एक शब्द के तर्क के साथ {}और उसके बीच के अंतर की भी तुलना करें set()

>>> a = set('aardvark')
>>> a
{'d', 'v', 'a', 'r', 'k'} 
>>> b = {'aardvark'}
>>> b
{'aardvark'}

लेकिन दोनों aऔर bनिश्चित रूप से सेट हैं।


4
के कारण है कि मैं पसंद के रूप में अपने आप को सेट निर्माता याद दिलाना है कि set([])बजाय बस से set()
माइकल एकोका

3
set()हमेशा एक ही तर्क लें। एक एकल चलने योग्य।
जॉर्ज केटलबोरो

1
@GeorgeKettleborough एक एकल या कोई तर्क नहीं , बाद में एक खाली सेट बनाने के लिए।
गर्त्विद्जक

28

से अजगर 3 प्रलेखन ( एक ही अजगर 2.7 के लिए रखती है ):

घुंघराले ब्रेसिज़ या सेट () फ़ंक्शन का उपयोग सेट बनाने के लिए किया जा सकता है। नोट: एक खाली सेट बनाने के लिए आपको सेट का उपयोग करना होगा (), {} नहीं; उत्तरार्द्ध एक खाली शब्दकोश बनाता है, एक डेटा संरचना जिसे हम अगले भाग में चर्चा करते हैं।

अजगर 2.7 में:

>>> my_set = {'foo', 'bar', 'baz', 'baz', 'foo'}
>>> my_set
set(['bar', 'foo', 'baz'])

ध्यान रखें कि {}इसका उपयोग map/ के लिए भी किया जाता है dict:

>>> m = {'a':2,3:'d'}
>>> m[3]
'd'
>>> m={}
>>> type(m)
<type 'dict'> 

सेट को इनिशियलाइज़ करने के लिए एक व्यापक सिंटैक्स का उपयोग कर सकते हैं:

>>> a = {x for x in """didn't know about {} and sets """ if x not in 'set' }
>>> a
set(['a', ' ', 'b', 'd', "'", 'i', 'k', 'o', 'n', 'u', 'w', '{', '}'])

1

आपको empty_set = set()एक खाली सेट को इनिशियलाइज़ करने के लिए करने की आवश्यकता है । {}खाली डिक्टेटी है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.