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