Вставка кортежа в кортеж - PullRequest
2 голосов
/ 13 октября 2019

Я использую цикл для создания кортежей, и я хотел бы вставить эти кортежи в большой кортеж.

Если предположить, что мой вход равен (1, 2, 3), который генерируется каждым циклом, мой ожидаемый результат равен ((1, 2, 3), (1, 2, 3)).

Я пробовал несколько способов, но все еще не могу понять, как это сделать.

big_tup = ()

for i in range(2):
    tup = (1, 2, 3)

    # this will cause AttributeError: 'tuple' object has no attribute 'insert'
    big_tup.insert(tup) 

    # this will combine all tuples together, output: (1, 2, 3, 1, 2, 3)
    big_tup += tup

    # this will make duplicates of (), output: (((), 1, 2, 3), 1, 2, 3)
    big_tup = (big_tup,) + tup

Буду очень признателен, если кто-нибудь поможет мне решить эту проблему. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Вы не хотите здесь кортеж;Вы хотите список. Кортежи неизменны;они не могут быть добавлены, когда они были созданы.

Списки могут быть append отредактированы до:

big_list = []
. . .
big_list.append(tup)

print(big_list)  # [(1, 2, 3), (1, 2, 3)]
0 голосов
/ 13 октября 2019

Как указано @ carcigenicate здесь рекомендуется использовать список кортежей вместо кортежей кортежей.

Как видно здесь . Вам просто нужно использовать приведенный ниже код, если вы очень внимательны при создании кортежа кортежей.

big_tup = ()

for i in range(2):
    tup = (1, 2, 3)
    big_tup += (tup,) # this doesn't insert tup to big_tup, it is actually creating a new tuple and with the existing tuples and new tup using the same name

print(big_tup)
# ((1, 2, 3), (1, 2, 3))

Смотрите это в действии здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...