Одна строка для l oop с двумя возвратами в python 3 - PullRequest
0 голосов
/ 18 июня 2020

Я хотел бы вернуть два значения из одной строки для l oop в скобках.

x,y = [xval, yval for xval, yval in zip(x,y) if condition]

Это дает мне синтаксическую ошибку. Я могу запускать только это, например:

xy = [[xval,yval] for xval, yval in zip(x,y) if condition]
x = xy[:,0]
y = xy[:,1]

, что не очень красиво. Есть ли способ запустить, как в верхнем примере?

Я запускаю все это на Linux, используя python -3.7

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Просто unzip их:

x, y = zip(*[[xval,yval] for xval, yval in zip(x,y) if condition])
0 голосов
/ 18 июня 2020

Если вы пытаетесь выполнить итерацию по заархивированным кортежам из 2 списков, вы можете создать for l oop над кортежами с деструктуризацией:

for x,y in [(xval,yval) for xval, yval in zip(liste1,liste2) if condition]:
  print(x,y)

Я пытаюсь исключить кортежи из двух списков на основе условия и получить обратно отфильтрованные списки, тогда ответ Netwave правильный.

...