web-dev-qa-db-fra.com

Ajouter un autre tuple à un tuple de tuples

J'ai le tuple de tuples suivant:

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

et je veux ajouter un autre tuple au début

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

Comment puis-je faire ceci?

le résultat serait:

final_choices=(
             ('0', 'zero choice')
             ('1','first choice'),
             ('2','second choice'),
             ('3','third choice')
    )
48
John

Créez un autre tuple de tuples à partir de another_choice, puis concaténer:

final_choices = (another_choice,) + my_choices

Vous pouvez également envisager de faire my_choices une liste de tuples au lieu d'un Tuple-de-tuples en utilisant des crochets au lieu de parenthèses:

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

Ensuite, vous pouvez simplement faire:

my_choices.insert(0, another_choice)
52
Daniel Stutzbach

Ne vous convertissez pas en liste et inversement, c'est une surcharge inutile. + concatène les tuples.

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

Vous pouvez également utiliser la concaténation Tuple

c'est à dire.


final_choices = (another_choice,) + my_choices
4
Brendan

Ce que vous avez est un Tuple de tuples, pas une liste de tuples. Les tuples sont en lecture seule. Commencez par une liste à la place.

>>> 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) insère obj à l'index fourni dans une liste ... vous permettant de pousser n'importe quel objet arbitraire à n'importe quelle position dans la liste.

1
whaley