这可能已经得到了回答,但相信我,我可能会如此愚蠢(我现在有严重的疑虑)我甚至看不到解决方案。为了使我的问题变得非常简单,让我们说我有两个列表如下: 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
我最终得到了这么多,如果循环和列表推导我失去了数,我承认我对python规则不太熟悉。希望我能从这里得到任何帮助。
答案 0 :(得分:1)
使用列表理解,只需检查b中每个列表的第一个元素是否存在于:
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]
答案 1 :(得分:0)
您可以filter
list2
:
result = filter(lambda vector: int(vector[0]) in list1, list2)
请注意,您必须首先将list2
中的列表中包含的字符串(请注意'
!)转换为整数,这是int()
在此处所做的。