Python作业-创建新列表

Python作业-创建新列表,python,list,Python,List,任务: 编写一个名为splitList(myList,option)的函数,该函数接受一个列表和一个选项(0或1)作为输入。如果选项的值为0,则函数将返回一个列表,其中包含myList中为负值的元素;如果选项的值为1,则函数将返回一个列表,其中包含myList中为偶数的元素 我知道如何判断一个数是偶数还是负数。我一直在苦苦思索如何根据“选项”返回一个新的负数或偶数列表 到目前为止,我得到的是: def splitList(myList): newlist = [] for i i

任务:

编写一个名为
splitList(myList,option)
的函数,该函数接受一个列表和一个选项(0或1)作为输入。如果选项的值为0,则函数将返回一个列表,其中包含myList中为负值的元素;如果选项的值为1,则函数将返回一个列表,其中包含myList中为偶数的元素

我知道如何判断一个数是偶数还是负数。我一直在苦苦思索如何根据“选项”返回一个新的负数或偶数列表

到目前为止,我得到的是:

def splitList(myList):
    newlist = []
    for i in range(len(myList)):
        if (myList[i]%2 == 0):
           newlist.append(myList [i])
    return newlist
此程序出现以下错误:

Traceback (most recent call last): File "<string>", line 1, in <fragment> 
builtins.TypeError: splitList() takes exactly 1 positional argument (4 given)
Traceback(最近一次调用last):文件“”,第1行,在
builtins.TypeError:splitList()正好接受1个位置参数(给定4个)
编辑

myList [i]
能否显示调用splitList方法的代码

这是不正确的

myList [i]
这是你的问题,你不能有空间。python对语法要求非常严格

既然人们似乎认为他们应该投票否决我,让我解释一下:

有了这个空格,实际上就是说myList(它是一个列表)和[i],它是一个列表文字,索引0处的值为'i'

因此,将两个变量(一个实际变量和一个文本)传递到append方法中,而不是用逗号分隔,这将不起作用。

edit

myList [i]
能否显示调用splitList方法的代码

这是不正确的

myList [i]
这是你的问题,你不能有空间。python对语法要求非常严格

既然人们似乎认为他们应该投票否决我,让我解释一下:

有了这个空格,实际上就是说myList(它是一个列表)和[i],它是一个列表文字,索引0处的值为'i'


因此,您将两个变量(一个实际变量和一个文本)传递到append方法中,而不是用逗号分隔,这将不起作用。

正如我在评论中提到的,您应该标准化缩进:四个空格是Python标准的。通常可以将编辑器设置为插入四个空格而不是制表符(也不希望将制表符与空格混合)

至于您的实际问题:尝试编写三个合计函数:一个返回所有负值,一个返回偶数值,另一个基于
选项调用相应函数

def splitlist(myList, option):
    if option == 1:
        return get_even_elements(myList)
    elif option == 0:
        return get_negative_elements(myList)

def get_even_elements(myList):
    pass # Implementation this method here.

def get_negative_elements(myList):
    pass # Implementation this method here.

# Test it out!
alist = [-1, 2, -8, 5]
print splitlist(alist, 0)
print splitlist(alist, 1)

正如我在评论中提到的,您应该标准化缩进:四个空格是Python标准的。通常可以将编辑器设置为插入四个空格而不是制表符(也不希望将制表符与空格混合)

至于您的实际问题:尝试编写三个合计函数:一个返回所有负值,一个返回偶数值,另一个基于
选项调用相应函数

def splitlist(myList, option):
    if option == 1:
        return get_even_elements(myList)
    elif option == 0:
        return get_negative_elements(myList)

def get_even_elements(myList):
    pass # Implementation this method here.

def get_negative_elements(myList):
    pass # Implementation this method here.

# Test it out!
alist = [-1, 2, -8, 5]
print splitlist(alist, 0)
print splitlist(alist, 1)

亨利·凯特的评论是正确的。只需在
newlist.append(myList[i])
之前添加一个空格,就可以了


或者,如果你的老师允许,你可以使用制表符而不是空格来完全避免这个问题(只需确保不要在同一个文件中同时使用两者)。

Henry Keiter的评论是正确的。只需在
newlist.append(myList[i])
之前添加一个空格,就可以了

或者,如果您的老师允许,您可以使用制表符而不是空格来完全避免此问题(只需确保不要在同一文件中同时使用两者)。

def splitList(myList,选项):
返回[i如果为i,则返回myList中的i]
#试验
>>>myList=[2,3,-1,4,-7]
>>>拆分列表(myList,0)
[-1, -7]
>>>拆分列表(myList,1)
[2, 3, 4]
>>> 
def拆分列表(myList,选项):
返回[i如果为i,则返回myList中的i]
#试验
>>>myList=[2,3,-1,4,-7]
>>>拆分列表(myList,0)
[-1, -7]
>>>拆分列表(myList,1)
[2, 3, 4]
>>> 

我以前的答案不正确,我真的应该在开口之前测试一下。。。Doh!!!生活和学习

编辑

myList [i]
你的追踪正在给你答案。它正在以args列表的形式读取列表。不确定是否有一种超python的方法可以绕过它,但您可以使用命名参数:

splitList(myList=yourList)

但你的问题很可能是

splitList(1,2,3,4)  # This is not a list as an argument, it is a list literal as your 'args' list
这可以通过以下方式解决:

splitList([1,2,3,4])

这是你得到的追踪结果吗

Traceback (most recent call last):
  File "pyTest.py", line 10, in <module>
    print splitList(aList,1)
TypeError: splitList() takes exactly 1 argument (2 given)
回溯(最近一次呼叫最后一次):
文件“pyTest.py”,第10行,在
打印拆分列表(列表,1)
TypeError:splitList()正好接受1个参数(给定2个)

错误很可能是告诉您问题所在,这将是该方法只接受一个参数,但我尝试传入两个参数,如您的需求状态。

我以前的答案不正确,我真的应该在开口之前进行测试。。。Doh!!!生活和学习

编辑

myList [i]
你的追踪正在给你答案。它正在以args列表的形式读取列表。不确定是否有一种超python的方法可以绕过它,但您可以使用命名参数:

splitList(myList=yourList)

但你的问题很可能是

splitList(1,2,3,4)  # This is not a list as an argument, it is a list literal as your 'args' list
这可以通过以下方式解决:

splitList([1,2,3,4])

这是你得到的追踪结果吗

Traceback (most recent call last):
  File "pyTest.py", line 10, in <module>
    print splitList(aList,1)
TypeError: splitList() takes exactly 1 argument (2 given)
回溯(最近一次呼叫最后一次):
文件“pyTest.py”,第10行,在
打印拆分列表(列表,1)
TypeError:splitList()正好接受1个参数(给定2个)

错误很可能告诉您问题所在,这可能是该方法只接受一个参数,但我尝试传入两个参数,如您的需求状态。

我按原样尝试了您的代码,但传入正整数列表时没有收到任何错误,因此我不知道您的程序为什么会“崩溃”,所以我怀疑有其他东西干扰了你的调试。(不过,正如其他人所说,您确实应该在每个缩进级别使用相同数量的空格。)

以下是我输入的内容:

def splitList(myList):
    newlist = []
    for i in range(len(myList)):
        if (myList[i]%2 == 0):
           newlist.append(myList [i])  # Only 3-space indent here
    return newlist

print splitList([1, 2, 3, 4, 5])
当我运行它时:

[2, 4]
你会走路吗