পাইথনে সেটকে কীভাবে একটি তালিকায় রূপান্তর করবেন?


143

আমি পাইথন ২.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
লিনাক্সে পাইথন ২.6..6 এ আমার জন্য কাজ করে ... তবে সেই প্রথম লাইনটি কোনও সেট তৈরি করে না।
স্পষ্টত

2
মতে TypeError: 'set' object is not callable: কী set? ধন্যবাদ
খাবেন

13
আপনি সেট অন্তর্নির্মিত ছায়া গো। সম্ভবত আপনি দুর্ঘটনাক্রমে টাইপ করেছেন set=set(first_list)বা কিছু। এখন setএই সেট অবজেক্টে নতুন সংজ্ঞা দেওয়া হয়েছে যা ত্রুটির কারণ হতে পারে। একটি নতুন পাইথন দোভাষীর সাথে আবার চেষ্টা করুন
জন লা রুই

3
@gnibbler: আপনার এটিকে একটি উত্তর হিসাবে রাখা উচিত, কারণ এটি স্পষ্টতই এটি ভেঙেছিল।
ক্রিস মরগান

2
সমস্যাটি সংশোধন করার জন্য প্রশ্নটি সম্পাদনা করা খুব খারাপ। সঠিক কোডটি দেখতে এটি বিভ্রান্তিকর এবং এর পরে ত্রুটি তৈরি হচ্ছে না। আসলে, সম্পাদনাগুলির আগে আসল প্রশ্নটি ত্রুটির কারণ হিসাবে দেখায় না। আমি সন্দেহ করি এটি একটি অনুলিপি এবং পেস্ট ত্রুটি।
এলএস

উত্তর:


194

এটি ইতিমধ্যে একটি তালিকা

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
আমি যখন টাইপ করি (আমার_সেট) আমি <টাইপ 'সেট'>
পেয়েছি

2
@ গ্যাথ, আপনি কোড সম্পাদনা করার আগে এটি ছিল। আপনার বর্তমান কোডটি আমার মেশিনে দুর্দান্ত কাজ করে। অজগর দোভাষী হিসাবে এটি অনুলিপি করার চেষ্টা করে দেখতে পারেন এবং আউটপুটটি এখানে আটকান
ব্যবহারকারী

1
এটি চেষ্টা করে দেখুন: >>> আমার_লিস্ট = [1,2,3,4] >>> আমার_সেট = সেট (মাই_লিস্ট) >>> আমার_নিউ_লিস্ট = তালিকা (আমার_সেট) ট্রেসব্যাক (সর্বশেষতম কল): ফাইল "<কনসোল>", লাইন 1, <
মডুল> টাইপ এররারে

1
আমি বাজি ধরছি তিনি দুর্ঘটনাক্রমে 'সেট' নামটি {1,2,3} বা [1,2,3] বা এর মতো কিছুতে আবদ্ধ করেছেন। (কারণ আমি পরীক্ষার সময় দুর্ঘটনাক্রমে করেছি)
ব্যবহারকারী 3556757

1
এই পদ্ধতিটি ব্যবহার করে একটি পূর্ণসংখ্যার তালিকাকে রূপান্তর করা নির্ভরযোগ্য নয়: যদি আপনার সেটটি থাকে ([1,2,12,6])এবং আপনি list(([1,2,12,6]))এমন একটি তালিকা পেয়ে [1,2,1,2,6]
যাবেন

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 'form ফর্মের একটি সেটকে [' 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

পাইথন হ'ল গতিশীল টাইপ করা একটি ভাষা, যার অর্থ আপনি সি বা সি ++ এর মতো ভেরিয়েবলের ধরণটি নির্ধারণ করতে পারবেন না:

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)। এবং এটি বিভ্রান্তি তৈরি করছিল। আপনার উত্তর হ্রাস করা উচিত নয়। তবে এটি পাঠকদেরকে জড়িয়ে রাখার মতো নয় :) আমরা কেবল স্কিমিং করছি এবং ভুল জিনিসটিকে নিম্নচরিত দেখছি।
ভ্লাদিমির ভুকানাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.