繁体   English   中英

在另一个列表中搜索列表的元素

[英]search elements of list in another list

这可能已经回答了,但是相信我,我可能会这么傻(我现在有严重的疑问),我什至看不到解决方案。 为了使我的问题非常简单,假设我有两个列表,如下所示:list_1

[2, 3, 4]

list_2

[['2', '54', '65', '22'],['2', '67', '66', '32'], ['10', '11', '43', '90'], ['3', '28', '81', '78'], ['4', '87', '19', '13'], ['4', '30', '51', '92'], ['4', '11', '44', '55'], ['13', '22', '69', '99']]

我想做的是查找list_1的任何单个元素与list_2的第一个元素是否匹配,如果有,则返回稍后将写出的行(但我应该能够做到这一点) 。 实际上,在这种情况下,我追求的结果是:

2 54 65 22
2 67 66 32
3 28 81 78
4 87 19 13
4 30 51 92
4 11 44 55

我最终获得了太多的if,if循环和列表理解,以至于我不知所措,并且我承认我对python规则不太熟悉。 希望我能从这里得到任何帮助。

使用列表理解,只需检查b中每个列表的第一个元素是否存在于a中:

a = [2, 3, 4]
b = [['2', '54', '65', '22'],['2', '67', '66', '32'], ['10', '11', '43', '90'], ['3', '28', '81', '78'], ['4', '87', '19', '13'], ['4', '30', '51', '92'], ['4', '11', '44', '55'], ['13', '22', '69', '99']]

c = [x for x in b if int(x[0]) in a]

您可以只filter list2

result = filter(lambda vector: int(vector[0]) in list1, list2)

请注意,必须先将list2中列表中包含的字符串(请注意' !)转换为整数,这就是int()所做的。

暂无
暂无

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

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