एक सेट को अजगर में सूची में कैसे परिवर्तित करें?


145

मैं एक सेट को पायथन 2.6 में एक सूची में बदलने की कोशिश कर रहा हूं। मैं इस वाक्यविन्यास का उपयोग कर रहा हूं:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

हालाँकि, मुझे निम्नलिखित स्टैक ट्रेस मिले:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'set' object is not callable

मैं इसे कैसे ठीक करूं?


2
लिनक्स पर मेरे लिए 2.6.6 पर काम करता है ... लेकिन वह पहली पंक्ति सेट नहीं करता है।
detly

2
के अनुसार TypeError: 'set' object is not callable: क्या है set? धन्यवाद
खाएं

13
आपने सेट बिलिन पर छाया किया है। शायद आपने गलती से टाइप किया set=set(first_list)या कुछ और। अब setइस सेट ऑब्जेक्ट को फिर से परिभाषित किया गया है जो उस त्रुटि का कारण होगा। एक नए पायथन दुभाषिया के साथ फिर से कोशिश करें
जॉन ला रोय जूल

3
@gnibbler: आपको इसे एक उत्तर के रूप में रखना चाहिए, क्योंकि यह स्पष्ट रूप से यही था कि इसे तोड़ दिया।
क्रिस मॉर्गन

2
यह बहुत बुरा है समस्या को ठीक करने के लिए प्रश्न को संपादित किया गया है। यह सही कोड देखने के लिए भ्रामक है, जिसके बाद यह एक त्रुटि है जो उत्पन्न नहीं करेगा। वास्तव में, संपादन से पहले मूल प्रश्न दिखाए गए त्रुटि का कारण नहीं बनता है। मुझे लगता है कि यह एक कॉपी और पेस्ट त्रुटि है।
LS

जवाबों:


195

यह पहले से ही एक सूची है

type(my_set)
>>> <type 'list'>

क्या आप ऐसा कुछ चाहते हैं

my_set = set([1,2,3,4])
my_list = list(my_set)
print my_list
>> [1, 2, 3, 4]

संपादित करें: आपकी पिछली टिप्पणी का आउटपुट

>>> my_list = [1,2,3,4]
>>> my_set = set(my_list)
>>> my_new_list = list(my_set)
>>> print my_new_list
[1, 2, 3, 4]

मैं सोच रहा था कि क्या आपने ऐसा कुछ किया है:

>>> set=set()
>>> set([1,2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

4
जब मैं प्रकार (my_set) कर मैं <प्रकार 'सेट'> मिलता है
गत

2
@gath, इससे पहले कि आप कोड को संपादित करते। आपका वर्तमान कोड मेरी मशीन पर ठीक काम करता है। क्या आप इसे एक अजगर दुभाषिया में चिपकाने की कोशिश कर सकते हैं जैसा कि यह है और यहाँ आउटपुट पेस्ट करते हैं
उपयोगकर्ता

1
इसे आज़माएँ: >>> my_list = [1,2,3,4] >>> my_set = set (my_list) >>> my_new_list = सूची (my_set) ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "<कंसोल": " पंक्ति 1, में <मॉड्यूल> टाइप करें: 'सेट' ऑब्जेक्ट
कॉल करने

1
मुझे यकीन है कि उसने गलती से नाम 'सेट' को {1,2,3} या [1,2,3] या ऐसा ही कुछ किया था। (क्योंकि मैंने प्रयोग करते समय गलती से किया था)
user3556757

1
इस पद्धति का उपयोग करके एक पूर्णांक सूची को परिवर्तित करना विश्वसनीय नहीं है: यदि आपका सेट है ([1,2,12,6])और आप करते list(([1,2,12,6]))हैं तो आपको एक सूची मिल जाएगी जैसे [1,2,1,2,6]
PradyJord

12

के बजाय:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

प्रक्रिया को शार्टकट क्यों नहीं किया जाता है:

my_list = list(set([1,2,3,4])

यह आपकी सूची से डुप्लिकेट को हटा देगा और एक सूची आपको वापस लौटा देगा।


5
दोनों में कोई अंतर नहीं है। आपने अभी चर असाइनमेंट को इनलाइन किया है।

7

[संपादित करें] ऐसा लगता है कि आपने पहले "सूची" को फिर से परिभाषित किया है, इसे एक चर नाम के रूप में उपयोग किया जाता है:

list = set([1,2,3,4]) # oops
#...
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

और ओएलएल मिलता है

Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'set' object is not callable

5

जब भी आप इस प्रकार की समस्याओं में फंसते हैं, तो उस तत्व का डेटाटाइप खोजने का प्रयास करें जिसे आप पहले उपयोग करके परिवर्तित करना चाहते हैं:

type(my_set)

फिर, उपयोग करें:

  list(my_set) 

इसे एक सूची में बदलने के लिए। आप अब अजगर में किसी भी सामान्य सूची की तरह नव निर्मित सूची का उपयोग कर सकते हैं।


3

बस प्रकार:

list(my_set)

यह सेट को {[1], '2'} रूप में एक सूची में बदल देगा [[1], '2']।


2

अपनी पहली पंक्ति की समीक्षा करें। आपका स्टैक ट्रेस स्पष्ट रूप से आपके द्वारा यहां चिपकाए गए कोड से नहीं है, इसलिए मुझे ठीक से पता नहीं है कि आपने क्या किया है।

>>> my_set=([1,2,3,4])
>>> my_set
[1, 2, 3, 4]
>>> type(my_set)
<type 'list'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

आप जो चाहते थे set([1, 2, 3, 4])

>>> my_set = set([1, 2, 3, 4])
>>> my_set
set([1, 2, 3, 4])
>>> type(my_set)
<type 'set'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

" set()()कॉल करने योग्य नहीं" अपवाद का अर्थ है कि आप कुछ ऐसा कर रहे थे - setउदाहरण के लिए कॉल करने का प्रयास ।


0

मुझे यकीन नहीं है कि आप इस ([1, 2])वाक्य रचना के साथ एक सेट बना रहे हैं , बल्कि एक सूची। एक सेट बनाने के लिए, आपको उपयोग करना चाहिए set([1, 2])

ये कोष्ठक केवल आपकी अभिव्यक्ति को आच्छादित कर रहे हैं, जैसे कि आपने लिखा होगा:

if (condition1
    and condition2 == 3):
    print something

वास्तव में नजरअंदाज नहीं किया जाता है, लेकिन अपनी अभिव्यक्ति के लिए कुछ भी नहीं करते हैं।

नोट: (something, something_else)एक टपल बनाएगा (लेकिन अभी भी कोई सूची नहीं)।


@ अपना संपादन मेरे लिए ठीक है, कम से कम पहला ब्लॉक। क्या आप अभी भी त्रुटि कर रहे हैं? क्या आप इसे एक नई कमांड-लाइन में आज़मा सकते हैं? सिर्फ टाइप करते समय आपको क्या मिलता है set?
जोएल

0

पायथन एक गतिशील रूप से टाइप की जाने वाली भाषा है, जिसका अर्थ है कि आप उस प्रकार के चर को परिभाषित नहीं कर सकते जैसा कि आप C या C ++ में करते हैं:

type variable = value

या

type variable(value)

पायथन में, यदि आप प्रकार बदलते हैं, या प्रकार का परिवर्तन घोषित करने के लिए प्रकारों के init फ़ंक्शन (निर्माणकर्ता) का उपयोग करते हैं:

my_set = set([1,2,3])
type my_set

<type 'set'>जवाब के लिए आपको दे देंगे ।

यदि आपके पास एक सूची है, तो यह करें:

my_list = [1,2,3]
my_set = set(my_list)

-1

हम्म मैं शर्त लगाता हूं कि पिछली कुछ पंक्तियों में आपके पास कुछ इस तरह है:

list = set(something)

क्या मै गलत हु ?


जैसा कि ऊपर एक उत्तर में बताया गया है, आपकी भी यही धारणा है। प्रश्न के मुख्य कोड में संभवतः सेट listबनाने के बराबर होना था set(values)। और यह भ्रम बना रहा था। आपका जवाब नीचा नहीं होना चाहिए। लेकिन यह भी नहीं है कि टी पाठकों को टोकना नहीं है :) हम सिर्फ और सिर्फ गलत चीज को कम कर रहे हैं।
व्लादिमीर वुकानैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.