我需要比较单个列表列表中的元素。例如,这是我的两个列表:
writeInfinite
现在我的目标是在搜索列表中的每个项目中查找每个项目,如果两个项目listing = [['tl.48', 'tl.49', 'tl.57'], ['tl.23', 'tl.45', 'tl.12']];
search = [['tl.48','tl.57']];
,'tl.48'
与列表中的项目匹配,那么我从列表中选择该项目并附加它在一个空列表中。 'tl.57'
的大小为3个元素,listing[0]
和search[0][0]
位于search[0][1]
和listing[0][0]
。如何将listing[0][2]
放在单独的列表中并附加它。如果listing[0]
的大小为4 listing[0]
且search[0][0]
中存在search[0][1]
,我仍会将listing[0]
添加到新列表中。我该怎么办?
感谢。
答案 0 :(得分:1)
[lst for lst in listing if all([True if term in lst else False for term in search[0]])]
结果:[['tl.48', 'tl.49', 'tl.57']]
对于list
中的每个listing
,检查每个搜索字词in
list
是否为all
,只有在search[0]
此类字词存在时才附加
注意:搜索是包含单个列表的列表,这就是我们使用search
的原因。如果它只是元素列表,请改用result = []
for lst in listing:
valid = True
for term in search[0]:
if term not in lst:
valid = False
if valid:
result.append(lst)
。
大致相当于(相同的结果,不同的方法):
search
如果这是真正的列表比较(其中listing
和#include<stdio.h>
#include<stdlib.h>
int main(){
float x;
x=4/(4-1);
printf("%f\n", x);
}
都是列表列表),您需要找到更强大的解决方案。