Python'da listeyi tuple'a dönüştürme

Bir listeyi tuple'a dönüştürmeye çalışıyorum.

Google'da aradığımda buna benzer birçok cevap buluyorum:

l = [4,5,6]
tuple(l)

Ancak bunu yaparsam bu hata mesajını alıyorum:

TypeError: 'tuple' nesnesi çağrılabilir değil

Bu sorunu nasıl çözebilirim?

Çözüm

İşe yarayacaktır. Değişken adı olarak tuple, list veya diğer özel adları kullanmayın. Muhtemelen sorununuza neden olan şey budur.

>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)
Yorumlar (0)

eumiro'nun yorumunu genişletirsek, normalde tuple(l) bir listeyi l bir tuple'a dönüştürecektir:

In [1]: l = [4,5,6]

In [2]: tuple
Out[2]: 

In [3]: tuple(l)
Out[3]: (4, 5, 6)

Ancak, tupleı tuple türü yerine bir tuple olacak şekilde yeniden tanımladıysanız:

In [4]: tuple = tuple(l)

In [5]: tuple
Out[5]: (4, 5, 6)

sonra tuple'ın kendisi çağrılabilir olmadığından bir TypeError alırsınız:

In [6]: tuple(l)
TypeError: 'tuple' object is not callable

Yorumlayıcınızdan çıkıp yeniden başlatarak veya (@glglgl sayesinde) tuple için orijinal tanımı kurtarabilirsiniz:

In [6]: del tuple

In [7]: tuple
Out[7]: 
Yorumlar (0)

Şöyle bir şey yapmış olabilirsiniz:

>>> tuple = 45, 34  # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l)   # Will try to invoke the variable `tuple` rather than tuple type.

Traceback (most recent call last):
  File "", line 1, in 
    tuple(l)
TypeError: 'tuple' object is not callable
>>>
>>> del tuple  # You can delete the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)

Sorun şu. Daha önce bir tuple (45, 34) tutmak için bir tuple değişkeni kullandığınız için... Yani, şimdi tuple artık tuple türünde bir nesne...

Artık bir tip değildir ve dolayısıyla artık Çağrılabilir değildir.

Değişken adı olarak asla herhangi bir yerleşik tip kullanmayın... Kullanabileceğiniz başka bir isim var. Bunun yerine değişkeniniz için rastgele bir isim kullanın...

Yorumlar (0)