def merge(l1,l2):
i=0;
while((l1[i]!=none)||(l2[i]!=none)):SyntaxError:无效语法作为一个新手,我不知道上面的代码有什么问题。
发布于 2010-04-19 20:51:30
更多的Python化可能是这样的(因为它看起来像是在迭代两个列表,直到其中一个列表达到'None‘值):
for l1val,l2val in zip(l1,l2):
if l1val is None or l2val is None:
break
... rest of while loop goes here, using l1val and l2val
instead of l1[i] and l2[i]事实上,那个没有前哨的人看起来有点奇怪。如果这是您添加到列表末尾的东西,以便知道何时位于列表的末尾,那么不必费心--只需使用Python自己的迭代特性(for循环会在它们迭代的列表末尾自动停止*)。
for l1val,l2val in zip(l1,l2):
... body of while loop goes here, using l1val and l2val
instead of l1[i] and l2[i]*-它们不会自动停止-列表迭代器引发异常StopIteration,它被for循环捕获为停止循环的信号。
我的水晶球变得越来越模糊,但在你的方法名'merge‘中还有一条线索。假设merge包含两个列表,每个列表都是一个整数列表,而“merge”的意思是返回一个新的列表,其中包含l1和l2中各个值的和。下面是merge在for循环中的样子:
def merge(l1, l2):
retl = []
for v1,v2 in zip(l1, l2):
retl.append(v1+v2)
return retl作为一个新手,你应该学习并熟悉一个叫做“列表理解”的概念。使用列表理解,您可以将merge方法简化为:
def merge(l1, l2):
return [v1+v2 for v1,v2 in zip(l1, l2)]这相当于前面的函数-请研究这些函数,看看它是如何工作的。最后,在Python的鸭子类型出现的瞬间,按原样运行merge,但这次向它传递一个列表列表,而不是in列表。(左为操作练习。)
https://stackoverflow.com/questions/2666614
复制相似问题