70 votes

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 de celui-ci

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

Comment puis-je le faire ?

le résultat serait :

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

77voto

Daniel Stutzbach Points 20026

Construire un autre tuple-of-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 n-uplets au lieu d'un n-uplet de n-uplets en utilisant des crochets à la place des parenthèses :

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

Alors vous pourriez simplement faire :

my_choices.insert(0, another_choice)

34voto

katrielalex Points 40655

Ne pas convertir 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,))

8voto

Brendan Points 7674

Alternativement, utilisez la concaténation de tuple

c'est-à-dire

final_choices = (another_choice,) + my_choices

2voto

whaley Points 8789

Ce que vous avez est un tuple de tuples, pas une liste de tuples. Les tuples sont en lecture seule. Commencez plutôt par une liste.

>>> 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 l'objet à l'indice fourni dans une liste... ce qui vous permet de placer n'importe quel objet arbitraire à n'importe quelle position dans la liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X