Как мне получить доступ к списку в кортеже? - PullRequest
0 голосов
/ 24 апреля 2018

представьте, у меня есть кортеж, в котором, помимо прочего, хранится список.

например:

t = (1, 2, 3, 4 [5, 6, 7])

Хорошо, я хочу, чтобы все числа были сохранены в кортеже и списке. Как я могу это сделать? В отдельности я знаю, как получить номера, которые они сохраняются в кортеже. Я просто распаковал бы кортеж и, чтобы получить все числа, сохраненные в lis, я просто перебрал бы его. Но в этой ситуации я не знаю, что мне делать.

Есть идеи?

Для более подробной информации

def work_with_tuple(my_tuple = None):

    count_items = len(my_tuple)

    if count_items == 2:

        first_item, second_item = my_tuple

        print "first_item", first_item
        print "second_item", second_item

    if count_items == 3:

        first_item, second_item, third_item = my_tuple

        print "first_item", first_item
        print "second_item", second_item

        # But I have to know, that 'third_item' is a list.
        # Should I check every unpacked item if it is a list?
        # I think my idea it doesn't sound elegance.
        one, two = third_item
        print "one", one
        print "two", two

print "run first"
print "---------"
#   I call the function with easy tuple
work_with_tuple(my_tuple = (2, 3))
#   output: first_item 2
#           second_item 3
print ""
print "run second"
print "----------"
#   I call the function with nested tuple
work_with_tuple(my_tuple = (2, 3, [4, 6]))
#   output: first_item 2
#   second_item 3
#   one 4
#   two 6

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Этот способ доступа к списку в кортеже.

tl = (1,2,3,4,[5,6,7])
print tl
for i in tl:
    if isinstance(i, list):
        print i[2]
    else:
        print i

Я надеюсь, что ваша проблема решается с использованием моего кода.

0 голосов
/ 24 апреля 2018

Вы можете перебирать кортеж и проверять каждый элемент.

def unpack(t):
    numbers = []

    for item in t:
        if isinstance(item, list):
            numbers += item # add each item of the list into accumulator
        else:
            numbers.append(item)

    return numbers

Если вам нужно что-то более общее, см. этот ответ .

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