首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python走出索引Pyschool主题6 q 21

Python走出索引Pyschool主题6 q 21
EN

Stack Overflow用户
提问于 2014-05-26 06:05:31
回答 2查看 258关注 0票数 1

我正试图通过Python的必读练习来提高自己的水平,但这一次一直让我感到困惑。我的逻辑对我来说是非常有意义的,但在某些地方,它总是在列表上抛出一个超出界限的错误。

以下是问题所在

编写一个函数( list1,list2),它接受两个列表作为参数,并返回一个列表,该列表是从list1中删除可以在list2中找到的元素的结果。

示例

ubtractList

subtractList (范围(5),范围( 4) )4 subtractList( 1,2,3,4,5,2,4)1,3,5 subtractList ('a','b','c','d','x','y','z') 'a','b','c','d‘’

这是我到目前为止所拥有的

代码语言:javascript
复制
def subtractList(list1, list2): 
    if len(list1) > 0:
        for i in range(len(list1)):
            for p in range(len(list2)):
                if list1[i] == list2[p]:
                    list1.remove(list1[i])
    return list1
EN

回答 2

Stack Overflow用户

发布于 2014-05-26 06:20:25

我以为你想学,所以现在我会给你一些提示。如果这不是您所期望的,那么评论一下,我将编辑这篇文章并提供一个代码片段。

,我重复一遍,--在你投反对票之前,请在评论中添加一些片段。

  1. 您可以通过列表理解轻松地做到这一点。在这种情况下,这是非常冗长的,但是对于复杂的条件,它可能太难看了。
  2. 参见filter()内置函数。请记住,它返回生成器,因此您可能希望将其传递给list()

提示:您的条件是“元素不在list2中”。您可以将其嵌入理解中(在第一种情况下),也可以在第二种情况下嵌入lambda或命名函数(普通函数,带有def等)。

票数 0
EN

Stack Overflow用户

发布于 2014-05-26 06:26:34

因此,对于完成所需内容的方法,有很多注释/答案,我将向您展示为什么您要在代码中得到错误。

您在这里变异list1

代码语言:javascript
复制
                list1.remove(list1[i])

同时,range(len(list1))来自:

代码语言:javascript
复制
    for i in range(len(list1)):

保持相同的列表,从一开始就有list1的长度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23863683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档