Próbuję przekonwertować listę na krotkę.
Większość rozwiązań w Google oferuje następujący kod:
l = [4,5,6]
tuple(l)
Jednak kod powoduje komunikat o błędzie po uruchomieniu:
TypeError: Obiekt „tuple” nie jest wywoływalny Jak mogę rozwiązać ten problem?
python
python-2.7
tuples
LynnH
źródło
źródło
tuple
innym miejscu?Odpowiedzi:
Powinno działać dobrze. Nie używać
tuple
,list
lub inne specjalne nazwy jako nazwy zmiennej. Prawdopodobnie jest to przyczyną twojego problemu.źródło
Rozszerzając komentarz eumiro, zwykle
tuple(l)
konwertuje listęl
na krotkę:Jeśli jednak na nowo zdefiniowałeś
tuple
krotkę, a nietype
tuple
:wtedy pojawia się błąd typu, ponieważ sama krotka nie jest wywoływalna:
Możesz odzyskać oryginalną definicję
tuple
, zamykając i ponownie uruchamiając interpretera lub (dzięki @glglgl):źródło
Być może zrobiłeś coś takiego:
Oto problem ... Ponieważ użyłeś
tuple
zmiennej do przechowywaniatuple (45, 34)
wcześniej ... Więc teraztuple
jest cośobject
w rodzajutuple
...To już nie jest
type
i dlatego już nie maCallable
.Never
użyj dowolnego wbudowanego typu jako nazwy zmiennej ... Masz inną nazwę do użycia. Zamiast tego użyj dowolnej nazwy dla swojej zmiennej ...źródło
Aby dodać kolejną alternatywę dla
tuple(l)
Python> =3.5
możesz:Krótko, nieco szybciej, ale prawdopodobnie cierpi z powodu czytelności.
To zasadniczo rozpakowuje listę
l
wewnątrz krotkowego literału, który jest tworzony z powodu obecności pojedynczego przecinka,
.Ps: Otrzymany błąd wynika z maskowania nazwy,
tuple
tzn. Przypisałeś gdzieś nazwę krotki nptuple = (1, 2, 3)
.Korzystanie z
del tuple
ciebie powinno być dobre.źródło
Znajduję wiele odpowiedzi na bieżąco i poprawnie udzielonych, ale dodam coś nowego do stosu odpowiedzi.
W Pythonie istnieją nieskończone sposoby, aby to zrobić, oto kilka przykładów
Normalny sposób
rozsądne rozwiązanie
Pamiętaj, że krotka jest niezmienna, służy do przechowywania czegoś cennego. Na przykład hasło, klucz lub skróty są przechowywane w krotkach lub słownikach. Jeśli potrzebny jest nóż, po co używać miecza do krojenia jabłek. Używaj go mądrze, sprawi to, że Twój program będzie wydajny.
źródło
tuple(l)
(pierwszy sposób) jest krótszy niżtuple(item for item in l)
(drugi sposób).