python:因为In我不懂



我用来学习python的资源让你在自己的网站上执行模块。我认为它最初是为这所大学的学生设计的,所以这就是为什么我把它标记为家庭作业,尽管它不是。

无论如何:

他们让我执行这个任务:

定义一个函数prod(L),它返回列表L中元素的乘积。

我用这个代码实现了这个功能:

def prod(L):
   i = 0
   answer = 1
   x = len(L)
   while i < x:
    answer = answer * L[i]
    i = i + 1
    if i == x:
         return answer

下一个模块将非常简要地介绍For In循环。他们提出了一个问题:

像以前一样定义函数prod(L),但这次使用了新类型的循环。

我试着查阅其他资源来了解如何准确地使用它,但我没有遵循任何内容。有人能解释for-in-loop是如何工作的吗?最好用通俗易懂的英语?

供参考:以下是他们谈论的关于for in loop 的所有内容

循环浏览列表这很常见(就像前面练习)循环遍历列表中的每个值。Python允许执行此类操作的快捷方式,通常称为"forall"循环"或"for each"循环。具体地说,当L是一个列表时代码

for x in L: «loop body block»

执行以下操作:第一个x设置为L中的第一个值和正文被执行;则x被设置为L中的第二个值,并且主体被执行;这对所有人来说都是持续的L.中的项目

我就是无法完全理解这件事。我不是在寻找答案,因为我这样做是为了知识增长,但我觉得我在这方面落后了):

希望这个简单的例子能帮助澄清,以下两段代码可以做同样的事情:

使用while循环:

L = ['a', 'b', 'c']
i = 0
while i < len(L):
    print L[i]
    i += 1

使用for循环:

L = ['a', 'b', 'c']
for c in L:
    print c

如果您想要像while循环那样使用索引AND元素,那么使用enumerate:是一种Python方法

L = ['a', 'b', 'c']
for index, element in enumerate(L): # returns (0,'a'),(1,'b'),(2,'c')
    print index
    print element

正如您在上面看到的,for循环允许您直接在可迭代项的内容上进行迭代,而while循环方法用于跟踪索引并使用索引访问项。

for循环将循环遍历可迭代对象(通常是列表)的所有内容,并对每个成员对象执行一个操作,然后在没有更多对象可循环时脱离循环。Python标准文档很好地解释了这一点:

http://docs.python.org/tutorial/controlflow.html#for-报表

例如代码

for x in xrange(10):
    print x

将打印数字0到9

在给出的解释中,L是一个可迭代的。这可以是序列(例如列表、元组、字符串)或生成器(例如xrange())。迭代的每个元素都被依次绑定到名称x,并执行循环体。

在您的第一个版本中,您定义了一个索引变量i,然后访问L[i]。除了if i==x返回之外,没有其他对i的需要。

"for x in sequence"习语将索引变量抽象掉。您没有直接访问L[i],而是使用一个变量来表示循环中L中的每个项。

所以,假设我有一个10个数字(比如说整数)的列表。

我可能想做的一个常见任务是浏览这个列表,如果数字是偶数,我会加10。

所以,如果我输入:[1,2,3,4,5]我会得到:[1,12,3,14,5]

不过,我可以做的一件事是循环,对于每个索引,检查每个索引的值是偶数还是奇数。

但是,如果我不想考虑指数呢?我知道我无论如何都要浏览整个列表,而且我真的不需要知道元素的索引来确定元素是偶数还是奇数。

所以,不是:

lst = [1, 2, 3, 4, 5]
newLst=[]
i=0
while i < 10:
    if (lst[i]%2==0): # if element i of lst is even
        newLst+= [ lst[i]+10 ]
    i+=1

我可以做:

for element in list:
    if(element%2==0):
        newLst+= [ element+10]
    else: newLst+= [element]

通过这样做,我不必担心索引,而且我知道element将是列表中的一项

相关内容

  • 没有找到相关文章

最新更新