পাইথন তালিকাতে সেট


159

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

a = set(["Blah", "Hello"])
a = list(a)

কাজ করে না এটি আমাকে দেয়:

TypeError: 'set' object is not callable
python  list  set 

6
উপরোক্ত পাইথন ২.7 এ আমার জন্য কাজ করে।
aukost

20
আপনি যদি নিজের কোডটিতে অন্য কোনও ভেরিয়েবলের নাম রেখে থাকেন তবে setএটি পরিবর্তন করুন কারণ আপনি বিল্টিন ফাংশনটি ছায়া দিচ্ছেন set
মোয়াড

5
@mouad না, একটি মধ্যে বন্ধনীর মধ্যে স্ট্রিং TypeErrorনাম টাইপ না পরিবর্তনশীল নাম
phihag

7
@ জজ জন ডিড: আপনি list = some_setকোথাও করেছেন। print listআপনি এটি কল করার আগে যোগ করুন ।
জোচেন রিটজেল

6
পিডিবিতে ডিবাগ করার সময় আমি এই সমস্যায় পড়েছি যেখানে পিডিবি কমান্ড হিসাবে 'তালিকা' ওভাররাইড করা আছে।
ডাব্লুপি ম্যাকনিল

উত্তর:


242

আপনার কোড আছে কাজ (cpython 2.4, 2.5, 2.6, 2.7, 3.1 এবং 3.2 সাথে পরীক্ষিত):

>>> a = set(["Blah", "Hello"])
>>> a = list(a) # You probably wrote a = list(a()) here or list = set() above
>>> a
['Blah', 'Hello']

আপনি listদুর্ঘটনাক্রমে ওভাররাইট করেননি তা পরীক্ষা করুন :

>>> assert list == __builtins__.list

2
আমি এই আইডিএল-তে ঠিক এই কোডটি অনুলিপি করে আটকিয়েছি; আমি ত্রুটি পেয়েছি।

আপনি আউটপুট প্রদান করতে পারেন dir(set)এবং print set?
সুসম পাল

['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'](চর সীমাবদ্ধতার কারণে __ সরানো হয়েছে)

@ বিচারক জন ডিড আপনি কোন লাইনে ত্রুটি পেয়েছেন? আপনার setচেহারা ঠিক আছে।
ফিহাগ

সেট পরিবর্তে সেট চেষ্টা করুন: REF: docs.python.org/2/library/sets.html
গঞ্জালো

72

আপনি বিল্টিন সেটটি ভুল করে ভেরিয়েবলের নাম হিসাবে দুর্ঘটনাবশত ব্যবহার করে ছায়াযুক্ত করেছেন, এখানে আপনার ত্রুটির প্রতিলিপি দেওয়ার একটি সহজ উপায় is

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

প্রথম লাইন একটি সেট rebinds উদাহরণস্বরূপ সেটের। দ্বিতীয় লাইনটি উদাহরণটি কল করার চেষ্টা করছে যা অবশ্যই ব্যর্থ।

প্রতিটি ভেরিয়েবলের বিভিন্ন নাম ব্যবহার করে এখানে একটি বিভ্রান্তিকর সংস্করণ। একটি নতুন দোভাষী ব্যবহার করা

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

আশা করি এটি স্পষ্ট যে কলিং aএকটি ত্রুটি


25

আপনি লেখার আগে আপনি set(XXXXX) একটি ভেরিয়েবল হিসাবে "সেট" ব্যবহার করেছেন

set = 90 #you have used "set" as an object


a = set(["Blah", "Hello"])
a = list(a)

15

এটি কাজ করবে:

>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]

তবে, আপনি যদি ভেরিয়েবলের নাম হিসাবে "তালিকা" বা "সেট" ব্যবহার করেন তবে আপনি পাবেন:

TypeError: 'set' object is not callable

উদাহরণ:

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

আপনি যদি ভেরিয়েবলের নাম হিসাবে "তালিকা" ব্যবহার করে থাকেন তবে একই ত্রুটি ঘটবে।




2

মানচিত্র এবং ল্যাম্বদা ফাংশনগুলির সংমিশ্রণটি ব্যবহার করে দেখুন:

aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )

স্ট্রিংয়ে সংখ্যার সেট থাকলে আপনি এটি পূর্ণসংখ্যার তালিকায় রূপান্তর করতে চান এটি খুব সুবিধাজনক পদ্ধতির:

aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.