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

У меня есть 2d список, подобный этому:

[[0, (1, 2), (2, 1), (3, 3)], 
 [(1, 4), (3, 'y'), ('x', 'y'), ('x', 'y')], 
 [(2, 1), (1, 'y'), ('x', 'y'), ('x', 'y')],
 [(3, 1), ('x', 'y'), ('x', 'y'),('x', 'y')]]

Я хочу получить доступ и работать только с первым элементом (индекс 0) каждого кортежа.

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

Ответы [ 2 ]

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

Мне тоже не понятно, но вы можете использовать следующее, если хотите, чтобы элементы не были в кортежах в дополнение к первому элементу в кортеже:

og = [[0, (1, 2), (2, 1), (3, 3)],
     [(1, 4), (3, 'y'), ('x', 'y'), ('x', 'y')],
     [(2, 1), (1, 'y'), ('x', 'y'), ('x', 'y')],
     [(3, 1), ('x', 'y'), ('x', 'y'),('x', 'y')]]
firsts = [x[0] if isinstance(x, tuple) else x for y in og for x in y]

Если вы ищете только элементы с кортежем, передвиньте логику примерно так:

firsts = [x[0] for y in og for x in y if isinstance(x, tuple)]
0 голосов
/ 30 апреля 2018

Ваш вопрос мне не понятен, но если я правильно понял, first - это список первых элементов в любом кортеже в 2D-списке.

arr = [[0, (1, 2), (2, 1), (3, 3)],
[(1, 4), (3, 'y'), ('x', 'y'), ('x', 'y')],
[(2, 1), (1, 'y'), ('x', 'y'), ('x', 'y')],
[(3, 1), ('x', 'y'), ('x', 'y'),('x', 'y')]]

firsts = []
for row in arr:
    for tup in row:
        if not isinstance(tup, tuple):
            continue
        firsts.append(tup[0])
...