首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: Create function迭代list并返回一个删除了数字的list副本

Python: Create function迭代list并返回一个删除了数字的list副本
EN

Stack Overflow用户
提问于 2021-01-21 08:19:03
回答 5查看 52关注 0票数 0

我有以下列表:

代码语言:javascript
复制
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]

我正在尝试编写一个函数来迭代它,并返回这个列表的一个副本,其中删除了11。期望的输出是:[20, 33, 24, 0, 4, 3]

我想在我的函数中使用append方法和for循环。下面是我的代码:

代码语言:javascript
复制
listSecond = []

def iterateandremove (listInitial, num):
    for i in listInitial:
      if i != num:
        listSecond.append(i)
        print (listSecond)
    
    return (listSecond)


iterateandremove (listInitial, 11)

当我运行代码时,它会打印出正确的列表。但是我的函数根本没有返回任何东西。我做错了什么?

EN

回答 5

Stack Overflow用户

发布于 2021-01-21 08:25:37

你应该在你的函数中定义listSecond并从那里返回它。

这样,如果你多次运行它,你只会返回你的输入列表,而不是所有之前的组合。

代码语言:javascript
复制
def iterateandremove (listInitial, num):
    listSecond = []
    for i in listInitial:
      if i != num:
        listSecond.append(i)
    
    return (listSecond)

removed = iterateandremove(listInitial, 11)
print(removed)
#[20, 33, 24, 0, 4, 3]

您也可以使用简单的列表理解来实现这一点,而无需声明listSecond

代码语言:javascript
复制
def iterateandremove(initial, num):
    return [n for n in initial if n != num]
票数 3
EN

Stack Overflow用户

发布于 2021-01-21 08:26:24

当我运行代码时,它会打印出正确的列表。但是我的函数根本没有返回任何东西。我做错了什么?

这是因为您没有将其赋值给变量。您还需要在函数中创建一个新容器,而不是使用全局变量。试试这个:

代码语言:javascript
复制
def iterate_and_remove(list_initial, num):
    list_second = []
    for i in list_initial:
        if i != num:
            list_second.append(i)

    return list_second

result = iterate_and_remove([1,2,3,4], 4)
print(result)

您也可以使用列表理解来完成此操作:

代码语言:javascript
复制
list_second = [i for i in list_initial if i != 11]
票数 0
EN

Stack Overflow用户

发布于 2021-01-21 08:38:43

另一种选择;

代码语言:javascript
复制
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):

    return list(filter((num).__ne__, listInitial))

print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]

lambda函数也是一个很好的候选者;

代码语言:javascript
复制
listInitial = [20, 33, 24, 11, 0, 4, 3, 11]
def iterateandremove(listInitial, num):

    return list(filter(lambda digit: digit != num, listInitial))

print(iterateandremove(listInitial, 11))
[20, 33, 24, 0, 4, 3]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65819519

复制
相关文章

相似问题

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