python 删除列表中的元素

已知
list= [(1,2,3,4,5)]
list2 = [(1,2),(2,4),(7,8),(4,7),(6,10)]

想要求出list2中不包括list的结果, 如下val的值
val = [(7,8),(6,10)]

如何做? 感谢~

其实遍历list2里面的元素就行,判断每个元素的值都没在list出现,就把它添加到列表val

list= [(1,2,3,4,5)]
list2 = [(1,2),(2,4),(7,8),(4,7),(6,10)]
val = []
for item in list2:
    if item[0] not in list and item[1] not in list:
        val.append(item)
print(val)
list = [(1, 99, 8, 10, 6)]
list2 = [(1, 99), (2, 8), (7, 9), (8, 10), (8, 6)]

set1 = set(list[0])
val = [x for x in list2 if all(y not in set1 for y in x)]
print(val)

img


运行试试,原理是使用列表推导式和all()函数来实现。具体步骤如下:

将list列表转换成集合 set1,方便后面使用。
使用列表推导式遍历list2中的每一个元素,如果当前元素不包括在set1中,则将其添加到结果列表中。
最后返回结果列表。

这一看都不包括呀

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7618414
  • 这篇博客也不错, 你可以看下Python二维列表list初始化,不限定维度长度
  • 除此之外, 这篇博客: python:列表list属性中的 查找成员的下标,后面是下标范围 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    list1.index(9, 2, 8)

  • 您还可以看一下 秦红华老师的美女讲师教你学Python第一季:基础入门课程中的 List列表的基本操作方法小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    答案:

    可以使用列表推导式和条件判断实现删除列表中的特定元素:

    list1 = [0,0,0,1,2,0,3,0]
    list2 = [1,2,3,4,5,6,7,8]
    new_list = [i for i in list1 if i not in list2]
    print(new_list)
    # 输出结果为 [0, 0, 0, 0]
    

    解释: new_list 是通过列表推导式生成的新列表,其中每个元素 i 都来自 list1。但是这里加了一个判断条件 if i not in list2,表示只有当 i 不在 list2 中时,才向新列表中添加它。这就实现了在 list1 中删除 list2 元素并生成新列表的效果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^