两个相关列表的列表理解,输出按第二个列表排序

时间:2019-03-14 21:51:58

标签: python list-comprehension

我正在尝试解决如何将这两个for循环转换为一个列表理解的问题。我们有这两个列表,我想根据第二个列表对第一个列表进行排序。对于for循环,它看起来像这样:

numbers = [-2, -8, 1, 17]
nov = [1, 2, 8, 17]
pon = []
  for i in nov:
     for x in numbers:
         if abs(x) == i:
             pon.append(x)
print(pon)
->>>[1, -2, -8, 17]

是否有可能将这两个循环作为列表理解? 预先非常感谢。

1 个答案:

答案 0 :(得分:0)

通过以与嵌套逻辑相同的顺序对for循环和if条件进行排序,可以在列表理解中获得相同的输出。例如(重命名了几个变量以使关系更加突出):

absolutes = [1, 2, 8, 17]
numbers = [-2, -8, 1, 17]

result = [n for a in absolutes for n in numbers if abs(n) == a]
print(result)
# [1, -2, -8, 17]