Python Фильтрация двух списков по значениям в одном списке - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь отфильтровать набор координат x, y по значению координаты x, например, в следующем коде:

x_list = [-4,-4,-3,-2,-2,-1,-1,1,2,3,4]
y_list = [0,2,-4,-2,4,-1,3,1,3,-1,4]

new_x = []
new_y = []

for i,x in enumerate(x_list):

    if x <= some_value:

        new_x.append(x_list[i])
        new_y.append(y_list[i])

Может ли эта операция выполняться более эффективно в одной строке с лямбда-выражением и такими функциями, как map, filter, zip?

Спасибо, любезно!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Используя zip, filter и lambda:

result = list(filter(lambda item: item[0] <= some_value, zip(x_list,y_list)))

Вы можете распаковать возвращенный список пар x_coordinate, y_coordinate:

new_x, new_y = list(zip(*result))
# new_x and new_y returned as tuple
0 голосов
/ 26 апреля 2020

Вы можете использовать почтовый индекс так:

for z in zip(x_list, y_list):
  print(z)
# prints tuples (x, y)

Или вот так:

for x,y in zip(x_list, y_list):
  print(x)
  print(y)

Все вместе:

points = [z for z in zip(x_list, y_list) if z[0] <= somevalue]
...