2

大家好,我正在使用 Python,我正在尝试编写一个带有列表和选项(1 或 0)的函数。如果选项为 0,则返回一个新列表,其中包含绝对值大于 5 的所有数字;如果选项为 1,则返回所有奇数。

我几乎可以使用 0 选项,但是当我尝试取回列表时,它只会将其保持空白,我想知道是否有人可以帮助我找到我在添加列表元素时做错了什么。

到目前为止我的代码:

def splitList(myList, option):
    myList = []
    myList2 = []
    if option == 0:
        for element in myList:
            if abs(element)>5:
                myList2.append(element)
    print(myList2)
4

3 回答 3

3

您想从函数返回结果;return在末尾添加声明:

return myList2

myList此外,您在函数开始时重新绑定到一个空列表;完全删除该行;否则,您将忽略myList传递给函数的参数:

def splitList(myList, option):
    myList2 = []
    if option == 0:
        for element in myList:
            if abs(element)>5:
                myList2.append(element)
    return myList2

您可以将循环简化为使用列表推导:

def splitList(myList, option):
    if option == 0:
        return [el for el in myList if abs(el) > 5]
于 2013-10-11T15:28:20.413 回答
3

您正在接受列表的参数,但随后将其本地覆盖为 [],因此 myList 在进入 for 循环之前当然是空的

于 2013-10-11T15:30:00.780 回答
2

您可以使用列表理解轻松做到这一点:

def splitList(myList,option):
  if option==0:
    return [x for x in myList if abs(x)>5]
  return [x for x in myList if (x%2)==1]
于 2013-10-11T15:35:40.213 回答