Как выбрать часть списка на основе определенных условий

Я хочу сделать следующее:

L = [(1,2),(3,4),(5,6)]
new_list = list( element in L for i,j in L if i >1 and j >4)

результат new_list будет [(5,6)]

Я знаю, как это сделать для 1-го списка, например:

L1 = [1,2,3,4]

new_L1 = list( i for i in L1 if i>1 )

Но я не знаю, как сделать подобное для многомерных списков в Python.

2 ответа

Решение

Вы можете просто распаковать вложенные кортежи в нужные переменные в основном цикле:

[(i, j) for i, j in L if i > 1 and j > 4]

Обратите внимание, что тогда вам нужно "восстановить" исходный кортеж в левом выражении.

В качестве альтернативы обращайтесь к элементам с индексами:

[elem for elem in L if elem[0] > 1 and elem[1] > 4]

Обратите внимание, что я использовал здесь понимание списка (вы использовали выражение генератора внутри list() функция, получая аналогичные результаты, но менее эффективным способом).

Вы можете перебирать кортежи как обычно:

new_l = [tup for tup in L if tup[0] > 1 and tup[1] > 4]
Другие вопросы по тегам