Как выбрать часть списка на основе определенных условий
Я хочу сделать следующее:
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]