python:对于In循环-我不理解
我用来学习python的资源让您在自己的网站上执行模块。我认为它最初是为这所大学的学生设计的,所以我把它和家庭作业联系起来,尽管它不是 无论如何: 他们让我执行这项任务: 定义一个函数prod(L),它返回列表L中元素的乘积 我使用以下代码实现了此函数: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 ==
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]