2010-08-19 1 views
33

Ho la seguente tupla di tuple:Aggiungere un'altra tuple ad una tupla di tuple

my_choices=(
     ('1','first choice'), 
     ('2','second choice'), 
     ('3','third choice') 
) 

e voglio aggiungere un altro tuple l'inizio di esso

another_choice = ('0', 'zero choice') 

Come posso fare questo ?

il risultato sarebbe:

final_choices=(
      ('0', 'zero choice') 
      ('1','first choice'), 
      ('2','second choice'), 
      ('3','third choice') 
    ) 
+4

Questa è una tupla, non una lista di tuple. –

risposta

36

costruire un altro tuple-di-tuple su another_choice, quindi concatenare:

final_choices = (another_choice,) + my_choices 

In alternativa, considerare la my_choices una lista-dei-tuple al posto di una tupla-di-tuple utilizzando le parentesi quadre invece di parentesi:

my_choices=[ 
    ('1','first choice'), 
    ('2','second choice'), 
    ('3','third choice') 
] 

Poi si può semplicemente fare:

my_choices.insert(0, another_choice) 
0

quello che hai è una tupla di tuple, non una lista di tuple. Le tuple sono di sola lettura. Inizia con una lista invece.

>>> my_choices=[ 
...   ('1','first choice'), 
...   ('2','second choice'), 
...   ('3','third choice') 
... ] 
>>> my_choices.insert(0,(0,"another choice")) 
>>> my_choices 
[(0, 'another choice'), ('1', 'first choice'), ('2', 'second choice'), ('3', 'third choice')] 

list.insert (ind, obj) inserisce obj in corrispondenza dell'indice fornito all'interno di una lista ... che consente di spingere qualsiasi oggetto arbitrario in qualsiasi posizione all'interno della lista.

11

Non convertire in una lista e tornare indietro, è inutile sovraccarico. + concatena le tuple.

>>> foo = ((1,),(2,),(3,)) 
>>> foo = ((0,),) + foo 
>>> foo 
((0,), (1,), (2,), (3,)) 
+0

Pensavo che non potessi cambiare le tuple? – Douglas

+0

Non puoi --- ma puoi ridefinirli :) – katrielalex

3

alternativa, utilizzare la tupla concatenazione

cioè


final_choices = (another_choice,) + my_choices