Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:对于In循环-我不理解_Python_Loops_For Loop - Fatal编程技术网

python:对于In循环-我不理解

python:对于In循环-我不理解,python,loops,for-loop,Python,Loops,For Loop,我用来学习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 ==

我用来学习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
def产品(L):
i=0
答案=1
x=len(L)
而i
下一个模块将非常简要地介绍For In循环。他们提出了一个问题:

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

我已经尝试通过其他资源来了解如何准确地使用它,但我没有遵循任何东西。有人能用简单的英语解释for-in循环是如何工作的吗

供参考:以下是他们讨论的关于for-in循环的所有内容

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

对于L中的x:«循环体块»

执行以下操作:第一个x设置为 L中的第一个值,执行主体;然后将x设置为 L中的第二个值,执行主体;所有人都将继续这样做 L.中的项目


我就是不能完全相信这一点。我不是在寻找答案,因为我这样做是为了知识增长——但我觉得我在这方面落后了):

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

例如,代码

for x in xrange(10):
    print x

将打印数字0到9,在给出的说明中,
L
是一个可编辑的。这可以是序列(例如列表、元组、字符串)或生成器(例如
xrange()
)。iterable的每个元素依次绑定到名称
x
,并执行循环体。

希望这个简单的示例有助于澄清,以下两段代码做同样的事情:

使用
while
循环:

L = ['a', 'b', 'c']
i = 0
while i < len(L):
    print L[i]
    i += 1
L = ['a', 'b', 'c']
for c in L:
    print c
如果您希望索引和元素与
while
循环类似,则python方法是使用enumerate:

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

如上所述,for
循环允许您直接迭代iterable的内容,而不是while循环方法,在该方法中,您跟踪索引并使用索引访问项目。

在第一个版本中,您定义了索引变量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

通过这样做,我不必担心索引,我知道
元素将是列表中的一项。

谢谢大家-我把这件事弄得太难了。在大多数情况下,我只是在循环中使用While。下面是我提出的代码:在该代码中不需要
x
;一旦iterable耗尽,for
循环将结束。您根本不需要i。对于l:answer=answer*z中的z……这个例子的轻微复杂性开始远离我。我会试着把它再浓缩一点
for element in list:
    if(element%2==0):
        newLst+= [ element+10]
    else: newLst+= [element]