python tuple operations




Converti lista in tupla in Python (4)

Dovrebbe funzionare bene. Non usare tuple , list o altri nomi speciali come nome di una variabile. Probabilmente è ciò che sta causando il tuo problema.

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

Sto provando a convertire una lista in una tupla.

Quando lo faccio su Google, trovo molte risposte simili a:

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

Ma se lo faccio ricevo questo messaggio di errore:

TypeError: l'oggetto 'tuple' non è richiamabile

Come posso risolvere questo problema?


Espandendo il commento di eumiro, normalmente tuple(l) convertirà una lista l in una tupla:

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

In [2]: tuple
Out[2]: <type 'tuple'>

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

Tuttavia, se hai ridefinito la tuple in una tupla anziché nella tuple del type :

In [4]: tuple = tuple(l)

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

quindi si ottiene un errore TypeE poiché la tupla stessa non è chiamabile:

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

Puoi recuperare la definizione originale di tuple chiudendo e riavviando il tuo interprete o (grazie a @glglgl):

In [6]: del tuple

In [7]: tuple
Out[7]: <type 'tuple'>

Potresti aver fatto qualcosa del genere:

>>> 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 "<pyshell#10>", line 1, in <module>
    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)

Ecco il problema ... Poiché hai usato una variabile tuple per contenere una tuple (45, 34) prima ... Quindi, ora tuple è un object di tipo tuple ora ...

Non è più un type e quindi non è più Callable .

Never utilizzare Never tipi predefiniti come nome della variabile ... Hai un altro nome da utilizzare. Utilizza invece un nome arbitrario per la tua variabile ...


Trovo molte risposte aggiornate e correttamente risposta, ma aggiungerò qualcosa di nuovo alla pila di risposte.

In Python ci sono infiniti modi per farlo, qui ci sono alcune istanze
Modo normale

>>> l= [1,2,"","pytho"]
>>> l
[1, 2, '', 'pytho']
>>> tup = tuple(l)
>>> type(tup)
>>> tup = tuple(l)
>>> type(tup)
<type 'tuple'>
>>> type(tup)
<type 'tuple'>
>>> tup
(1, 2, '', 'pytho')

modo intelligente

>>>tuple(item for item in l)
(1, 2, '', 'pytho')

Ricorda che la tupla è immutabile, usata per conservare qualcosa di prezioso. Ad esempio password, chiave o hash sono memorizzati in tuple o dizionari. Se è necessario un coltello, perché usare la spada per tagliare le mele. Usalo saggiamente, renderà anche il tuo programma efficiente.







tuples