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