如何比较子列表python中的元素?

pythonnewbie

如何比较python子列表中的元素?我想将索引1和索引2与其他列表进行比较。并且想要不匹配的子列表

list1 =  [['10.100.10.37', 19331, '2020-9-28 6:38:10', 15, 16], ['10.100.10.37', 29331, '2020-9-28 6:38:10', 15 ,17]]
list2 = [ ['10.100.10.37', 19331, '2020-9-28 6:38:10', 15],['10.100.10.37', 19331, '2020-9-28 9:38:10', 15],['10.100.10.37', 21301, '2020-9-28 6:38:10', 15]]


new_items = []
for item in list2:
    if not any(x[1] == item[1] for x in list1):
       if not any(x[2] != item[2] for x in list1):       
           new_items.append(item)
   
print(new_items)

我得到的输出为(实际输出):

[['10.100.10.37', 21301, '2020-9-28 6:38:10', 15]]

预期产量:

[['10.100.10.37', 19331, '2020-9-28 9:38:10', 15], 
['10.100.10.37', 21301, '2020-9-28 6:38:10', 15]]
埃洛伊·佩雷斯·托雷斯(EloyPérezTorres)

代码中的主要问题:嵌套any函数调用将无法满足您的要求(代码未将中的每个列表的第一个索引和第二个索引list1与中的子列表的相应索引进行比较list2

列表理解和any调用将达到目的:

new_items = [item for item in list2 if not any(item[1] == x[1] and item[2] == x[2] for x in list1)]

使用切片的版本(以防您需要增加连续检查的次数):

new_items = [item for item in list2 if not any(item[1:3] == x[1:3] for x in list1)]

使用的替代版本filter(从问题上更直接一些):

tmp = [x[1:3] for x in list1]
new_items = list(filter(lambda x: not x[1:3] in tmp, list2))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中比较列表列表中的元素并比较列表列表中的键?

比较python中列表的元素

将列表的元素与子列表的元素进行比较python

如何比较Python中不同列表的第n个元素?

如何比较列表中2个子列表元素的索引

比较python中不同列表中的元素

通过将子列表的元素与Python中所有其他子列表中的元素进行比较来删除子列表

如何在所有子列表上循环并使用python比较每个元素

如何在Python的子列表中添加元素?

比较 Python 中列表的匹配元素

如何在Python的各自列表中比较同一索引中2个列表中的元素?

如何比较子列表

比较列表中的元素

比较列表中的元素

列表比较元素的python列表

如何比较列表中的子列表[List [Double]]

比较和删除python列表中的子列表

如何比较python中两个单独列表中每个元素的长度?

将python中的列表与列表进行比较以查找公共元素

如何比较Python的两个列表列表并通过列表中的单个元素删除重复项

如何在python中比较列表/数组/字典中的相应元素

如何通过将其与Python中的字符串进行比较来查找列表元素的索引?

python如何比较字典中的元素?

如何比较列表列表中的重复元素并在python中的列表相同列表的另一个元素上给出IF条件

比较python中两个列表中的元素

比较python中两个列表中的元素

如何优化python列表中的比较组合

Python 2.7如何比较列表中的项目

如何在 Python 中比较列表中的对?