كيف يمكنني تحويل مجموعة إلى قائمة في بيثون؟ عن طريق
a = set(["Blah", "Hello"])
a = list(a)
لا يعمل هذا يعطيني:
TypeError: 'set' object is not callable
الكود يعمل يعمل (تم اختباره باستخدام 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
لقد ألقيت الظلال على المجموعة المضمنة من خلال استخدامها بطريق الخطأ كاسم متغير ، فإليك طريقة بسيطة لتكرار الخطأ
>>> 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
خطأ
قبل أن تكتب set(XXXXX)
، استخدمت "set" كمتغير على سبيل المثال.
set = 90 #you have used "set" as an object
…
…
a = set(["Blah", "Hello"])
a = list(a)
هذا سيفي بالغرض:
>>> 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
سيحدث نفس الخطأ إذا كنت قد استخدمت "قائمة" كاسم متغير.
s = set([1,2,3])
print [ x for x in iter(s) ]
يعمل الرمز الخاص بك مع Python 3.2.1 على Win7 و x64
a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>
حاول استخدام مجموعة من وظائف الخريطة و lambda:
aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )
إنها طريقة مريحة للغاية إذا كان لديك مجموعة من الأرقام في السلسلة وترغب في تحويلها إلى قائمة الأعداد الصحيحة:
aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )