Подтвердить что ты не робот

Добавьте еще один кортеж в кортеж кортежей

У меня есть следующий набор кортежей:

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

и я хочу добавить еще один кортеж в начало его

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

Как я могу это сделать?

результатом будет:

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

Ответ 1

Создайте еще один кортеж из another_choice, затем соедините:

final_choices = (another_choice,) + my_choices

В качестве альтернативы рассмотрим возможность создания my_choices списка кортежей вместо кортежей кортежей с помощью квадратных скобок вместо круглых скобок:

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

Тогда вы могли бы просто сделать:

my_choices.insert(0, another_choice)

Ответ 2

Не конвертируйте в список и обратно, без лишних накладных расходов. + объединяет кортежи.

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

Ответ 3

В качестве альтернативы используйте конкатенацию кортежа

то есть.


final_choices = (another_choice,) + my_choices

Ответ 4

У вас есть кортеж кортежей, а не список кортежей. Кортежи читаются только. Начните с списка.

>>> 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) вставляет obj по предоставленному индексу в список... позволяя вам перетаскивать любой произвольный объект в любую позицию в списке.