使用“ while”从另一个列表中删除一个列表中的元素

马丁

我创建了一个简单的程序,使用in方法至少两次将一个列表的元素从另一个列表中删除

def remove(l_list,s_list):
    """Removes items of s_list from l_list and returns the rest"""
    res=[]
    for item in l_list:
        if item not in s_list:
            res.append(item)
    return res

我想用if not in s_list“ while”循环代替操作,并比较这些功能的复杂性。

所以,我做了下面的代码(不起作用):

def remove2(l_list,s_list):
    res=[]
    for item in l_list:
        found=False
        i=0
        while len(s_list)>i and not found:
            if item==s_list[i]:
                found=True
                if not found:
                    res.append(item)
            i+=1
    return res

例子:

>>> remove2([1,2,3],[1,2])
[3]
>>> remove2([1,2,3],[1])
[2,3]

我究竟做错了什么?我的逻辑有什么问题?

塞弗特

您应该在while循环之后附加项目:

def remove2(l_list,s_list):
    res=[]
    for item in l_list:
        found=False
        i=0
        while len(s_list)>i and not found:
            if item==s_list[i]:
                found=True
            i+=1
        if not found:
            res.append(item)

    return res

而不是使用的found变量,如果你使用,你可以简化这个break

def remove2(l_list,s_list):
    res=[]
    for item in l_list:
        i=0
        while len(s_list)>i:
            if item==s_list[i]:
                break
            i+=1
        else:  
            # this else belongs to the while loop and is executed if and only if
            # the loop wasn't terminated by "break".
            res.append(item)

    return res

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用基于另一个列表的lambda从列表中删除元素

使用另一个列表从列表中删除元素

如何使用另一个列表从一个列表中删除匹配的元素?蟒蛇

Python使用另一个列表中的元素过滤出一个列表

使用另一个列表中的元素更新列表元素

如何使用一个列表中的每个元素作为另一个列表的索引?

如何使用另一个列表中的元素初始化新列表

如何使用 for 循环重命名另一个列表中的列表元素?

Python:列表的哪些元素在另一个列表中而不使用 for 循环?

使用linq根据另一个列表的属性从列表中删除对象

如何使用与另一个列表匹配的键从列表中删除字典

我应该如何使用谓词逻辑基于列表对象在C#中从另一个列表中包含元素,从而从通用列表中删除元素?

使用一个列表替换另一个列表中的值

根据条件使用另一个列表中的值更新一个列表

在蟒蛇中。使用一个列表的格式到另一个列表

使用列表理解来查找列表中的元素,而另一个列表中的所有元素都是因子

使用Java 8流在2个列表中查找匹配的元素,并从另一个列表中更新一个列表值

使用Java中环传递从一个列表中的元素到另一个

使用另一个列表中的字符串在列表列表中对元素进行分组

使用张量流中的另一个索引列表访问张量的元素

使用 Selenium 从另一个框架中查找与下拉列表相关的元素 -- Python

使用jQuery比较重复项并将其从另一个列表中删除

使用jq删除与另一个JSON文件中的列表匹配的键

如果在另一个列表中找不到一个列表中的元素,我如何在列表理解中使用 else ?

使用python中的列表理解从另一个列表生成列表

如何使用一个列表中的条件从另一个列表中查找值

如果无法直接修改类,如何使用元素类型的字段值从另一个列表中删除列表?

如何使用流将列表中的选定元素复制到另一个列表

如何获得元素在列表中的总出现率以及如何使用此信息创建另一个列表: