繁体   English   中英

在两个单独的列表上使用相同的列表推导

[英]Using identical list comprehensions on two separate lists

这感觉就像一个简单的问题,但我无法弄清楚,我无法在任何地方找到答案。

在一行中,如何在两个不同的列表中使用两个相同的列表推导,并将结果作为两个单独的列表返回?

我想这样做:

listx = [x for x in listx if x != None]
listy = [y for y in listy if y != None]

有没有办法在一行中做到这一点? 也许使用map()或列表理解?

虽然我不明白为什么它必须是单行,但这应该做你想要的:

listx, listy = [[x for x in alist if x != None] for alist in [listx, listy]]

我认为原始的和嵌套列表理解很好,非常易读。

但是,如果您想考虑具有输入和输出的函数:

您想要从列表中filter一些内容,因此可以将其写为:

listx = filter(None, listx)
listy = filter(None, listy)

有一个重复的模式。 这里的模式是我们一次更改多个列表。

map(function, collection)

因此,您可以使用filter分解原始问题以map多个lists

listx, listy = map(lambda x: filter(None, x), [listx, listy])

很简单:

listx, listy = [x for x in listx if x != None], [y for y in listy if y != None]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM