如何在Python 3.5.5中添加列表元素?

如何在Python 3.5.5中添加列表元素?,python,list,Python,List,我的任务是: 编写一个函数sumOfPairs,该函数有一个类型为list的参数。这个 列表可以为空或包含整数。列表的长度必须为 0或偶数。如果列表的长度不是0且不是 即使如此,函数也应该打印一条错误消息,并且不返回任何错误消息。你 可以假定列表只包含整数。函数返回 列表中每对连续数字之和的列表。 示例:如果列表为[1,5,2,10,15,2,9,3],则函数返回 [6,12,17,12] 到目前为止,我的努力是: def sumOfPairs (list1: list): if len

我的任务是:

编写一个函数sumOfPairs,该函数有一个类型为list的参数。这个 列表可以为空或包含整数。列表的长度必须为 0或偶数。如果列表的长度不是0且不是 即使如此,函数也应该打印一条错误消息,并且不返回任何错误消息。你 可以假定列表只包含整数。函数返回 列表中每对连续数字之和的列表。 示例:如果列表为[1,5,2,10,15,2,9,3],则函数返回 [6,12,17,12]

到目前为止,我的努力是:

def sumOfPairs (list1: list):
    if len(list1) != 0 and len(list1)%2 != 0:
        print ("Error")
        return (None)
    else:
        x = list1.index(int)
        answer = []
        while x<=len(list1):
            newListValue=list1(x)+list1(x+1)
            answer.insert(x,newListValue)
            x=x+2

    return (answer)

print (sumOfPairs ([1,5,2,10,15,2,9,3]))
def sumOfPairs(列表1:list):
如果len(列表1)!=0和len(列表1)%2!=0:
打印(“错误”)
返回(无)
其他:
x=list1.index(int)
答案=[]
而x
如果python函数没有像len(l)%2:
中那样指定返回值,那么默认情况下它将返回
None
,因此我们不需要显式返回None


一个不指定返回值的Python函数,如“代码”>如果LeN(L)% 2:< /C>将默认返回<代码> No.<代码>,因此我们不需要明确地返回任何一个。

< P>我不特别喜欢这里的方法,但是让我们具体来看一下错误。

Traceback (most recent call last):
  File "C:\Users\Andrew\Desktop\lab3.py", line 79, in <module>
    print (sumOfPairs ([1,5,2,10,15,2,9,3]))
  File "C:\Users\Andrew\Desktop\lab3.py", line 71, in sumOfPairs
    x = list1.index(int)
ValueError: <class 'int'> is not in list
请注意,它不是
值是int
!这是至关重要的,也是错误的原因。您的列表不包括类
int
。这大概是:

[1,2,3,int,5,6,7,8] # not your list
更简单的方法是测试所有索引是否包含int,然后遍历列表。让我们试试看吧(尽管你的练习说的不是这样,但部分原因是为了防止你只是复制/粘贴它!!:D)

或者,如果您知道如何使用石斑鱼配方(位于itertools模块的pydocs中),则更容易:


我并不特别喜欢你的方法,但是让我们具体来看一下这个错误。

Traceback (most recent call last):
  File "C:\Users\Andrew\Desktop\lab3.py", line 79, in <module>
    print (sumOfPairs ([1,5,2,10,15,2,9,3]))
  File "C:\Users\Andrew\Desktop\lab3.py", line 71, in sumOfPairs
    x = list1.index(int)
ValueError: <class 'int'> is not in list
请注意,它不是
值是int
!这是至关重要的,也是错误的原因。您的列表不包括类
int
。这大概是:

[1,2,3,int,5,6,7,8] # not your list
更简单的方法是测试所有索引是否包含int,然后遍历列表。让我们试试看吧(尽管你的练习说的不是这样,但部分原因是为了防止你只是复制/粘贴它!!:D)

或者,如果您知道如何使用石斑鱼配方(位于itertools模块的pydocs中),则更容易:



您是否了解
回溯
-发生错误的原因?在
else
子句的套件中,需要使用循环遍历列表。我没有使用Python 3.5,但在2.7中,参数列表中的冒号(
sumOfPairs(list1:list):
)抛出语法错误。这种语法在Python3.5中是新的吗?@SLawson它是函数注释,在Python3中是新的。看,我认为3.5.5还不存在。这是家庭作业吗?这不是这个网站的目的。为什么不问问你的老师呢?你了解
回溯
-为什么会发生错误吗?在
else
子句的套件中,需要使用循环遍历列表。我没有使用Python 3.5,但在2.7中,参数列表中的冒号(
sumOfPairs(list1:list):
)抛出语法错误。这种语法在Python3.5中是新的吗?@SLawson它是函数注释,在Python3中是新的。看,我认为3.5.5还不存在。这是家庭作业吗?这不是这个网站的目的。为什么不问问你的老师?(他只有一个参数。那是一个函数注释。)@AdamSmith,是的,是if语句中的两个检查抛出了meWow,这真的很有帮助!谢谢不用担心,不用客气,另外一件事是,如果您使用append向列表中添加,效率会更高。(他只有一个参数。这是一个函数注释。)@AdamSmith,是的,是if语句中的两个检查抛出了meWow,这真的很有帮助!谢谢不用担心,不客气,如果您使用append向列表中添加,还有一件事效率更高。
TypeError:grouper()只接受2个参数(给定1个)
grouper函数应该
返回zip(*[iter(iterable)]*n)
@gboffi-oops!输入错误:)
TypeError:grouper()只接受2个参数(1个给定)
grouper函数应该
返回zip(*[iter(iterable)]*n)
@gboffi oops!打字错误:)
[1,2,3,int,5,6,7,8] # not your list
def sum_of_pairs(lst: list):
    if len(lst) == 0 or len(lst) % 2 != 0:
        raise ValueError("Invalid list length")
        # makes more sense to raise an exception here than print an error
    if any(not isinstance(int, el) for el in lst):
        # if any element is not an int:
        raise ValueError("Invalid list contents")
    result_list = []
    for element in lst:
        first_el = element
        second_el = next(lst)
        # advance the iterator once to grab the next element
        result_list.append(first_el + second_el) # add them and append
    return result_list
def grouper(iterable, n):
    return zip(*iter([iterable])*n)

def sum_of_pairs(lst: list):
    # validate here, I'm not going to re-write it
    return [sum(pair) for pair in grouper(lst, 2)]
In [11]: l = [1,5,2,10,15,2,9,3]

In [12]: [sum(pair) for pair in zip(l[0::2],l[1::2])]
Out[12]: [6, 12, 17, 12]