当前位置:  开发笔记 > 编程语言 > 正文

按另一个列表过滤Python列表

如何解决《按另一个列表过滤Python列表》经验,为你挑选了1个好方法。

如何根据python中的另一个列表/集过滤列表列表.对于一个简单的列表,可以这样做:

mylist = [1,2,3,4,5,3,5,2,3,2,7,5,3]
[x for x in mylist if x in {3,5}]

但是如何最有效地为列表列表执行此操作:

mylistoflists = [[], [5, 1, 6], [5, 1, 6, 2, 7], [5, 1, 6, 2, 7, 4, 8], [5, 1, 11, 10], [5, 1, 4, 11, 10, 12]]
myvalues = set([4,10])

结果应该仍然是以下列表:

 [[], [], [], [4], [10], [4, 10]]

Eugene Yarma.. 5

基本上,同样的想法:

>>> mylistoflists = [[], [5, 1, 6], [5, 1, 6, 2, 7], [5, 1, 6, 2, 7, 4, 8], [5, 1, 11, 10], [5, 1, 4, 11, 10, 12]]
>>> myvalues = {4, 10}
>>> [[x for x in L if x in myvalues] for L in mylistoflists]
[[], [], [], [4], [10], [4, 10]]

如果myvalues是常量,则可以使用列表推导中的set literal替换它以获得更好的性能.



1> Eugene Yarma..:

基本上,同样的想法:

>>> mylistoflists = [[], [5, 1, 6], [5, 1, 6, 2, 7], [5, 1, 6, 2, 7, 4, 8], [5, 1, 11, 10], [5, 1, 4, 11, 10, 12]]
>>> myvalues = {4, 10}
>>> [[x for x in L if x in myvalues] for L in mylistoflists]
[[], [], [], [4], [10], [4, 10]]

如果myvalues是常量,则可以使用列表推导中的set literal替换它以获得更好的性能.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有