首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python while循环

python while循环
EN

Stack Overflow用户
提问于 2010-04-19 18:31:04
回答 1查看 24.8K关注 0票数 3
代码语言:javascript
复制
 def merge(l1,l2):
 i=0;
 while((l1[i]!=none)||(l2[i]!=none)):

SyntaxError:无效语法作为一个新手,我不知道上面的代码有什么问题。

EN

回答 1

Stack Overflow用户

发布于 2010-04-19 20:51:30

更多的Python化可能是这样的(因为它看起来像是在迭代两个列表,直到其中一个列表达到'None‘值):

代码语言:javascript
复制
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循环会在它们迭代的列表末尾自动停止*)。

代码语言:javascript
复制
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循环中的样子:

代码语言:javascript
复制
def merge(l1, l2):
  retl = []
  for v1,v2 in zip(l1, l2):
    retl.append(v1+v2)
  return retl

作为一个新手,你应该学习并熟悉一个叫做“列表理解”的概念。使用列表理解,您可以将merge方法简化为:

代码语言:javascript
复制
def merge(l1, l2):
  return [v1+v2 for v1,v2 in zip(l1, l2)]

这相当于前面的函数-请研究这些函数,看看它是如何工作的。最后,在Python的鸭子类型出现的瞬间,按原样运行merge,但这次向它传递一个列表列表,而不是in列表。(左为操作练习。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2666614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档