Loops 为什么';这个Python3 for循环是否将每个变量都更改为4?
我得到的结果是:Loops 为什么';这个Python3 for循环是否将每个变量都更改为4?,loops,python-3.x,for-loop,Loops,Python 3.x,For Loop,我得到的结果是: list = [1,2,3,4,5] print(list) for each in list: list[each] = 4 print(list) 第4行似乎以某种方式将“each”设置为4…但我不知道如何设置。它应该将当前迭代器的值更改为4,在列表[4]中也会这样做 编辑: 等等,好吧,“每个”都来自列表中的值?考虑到这一点,这是唯一合乎逻辑的方法。这会更好 [1, 4, 3, 4, 4] 您遇到的问题是,循环从1到5遍历数字,但列表的索引从零开始 向列表中添
list = [1,2,3,4,5]
print(list)
for each in list:
list[each] = 4
print(list)
第4行似乎以某种方式将“each”设置为4…但我不知道如何设置。它应该将当前迭代器的值更改为4,在列表[4]中也会这样做
编辑:
等等,好吧,“每个”都来自列表中的值?考虑到这一点,这是唯一合乎逻辑的方法。这会更好
[1, 4, 3, 4, 4]
您遇到的问题是,循环从1到5遍历数字,但列表的索引从零开始
向列表中添加零元素,或将循环中的每个值递减一,可以使代码正常工作。但是这种方法是有缺陷的,因为你依赖于列表的内容来排列顺序和表示位置
list = [1,2,3,4,5]
for each in range(len(list)):
list[each] = 4
print(list)
您的循环实际上正在这样做
list = [0,1,2,3,4,5] # zero added here.
for each in list:
list[each] = 4
print(list)
这样会更好
[1, 4, 3, 4, 4]
您遇到的问题是,循环从1到5遍历数字,但列表的索引从零开始
向列表中添加零元素,或将循环中的每个值递减一,可以使代码正常工作。但是这种方法是有缺陷的,因为你依赖于列表的内容来排列顺序和表示位置
list = [1,2,3,4,5]
for each in range(len(list)):
list[each] = 4
print(list)
您的循环实际上正在这样做
list = [0,1,2,3,4,5] # zero added here.
for each in list:
list[each] = 4
print(list)
最好使用enumerate()
,这样您就可以跳过范围(len())
:
some_list=[1,2,3,4,5]
对于i,枚举中的项(一些列表):
某些_列表[i]=4
打印(一些列表)
[4, 4, 4, 4, 4]
这将通过索引将some\u列表中的每个项目更改为4
为什么你的方式行不通
您可能会犯这样的思维错误:列表中的第一项具有索引0,而不是1:)
“按你的方式做”将是:
some_list=[1,2,3,4,5]
打印(一些列表)
对于某些列表中的每一项:
某些_列表[each-1]=4
打印(一些列表)
[1, 2, 3, 4, 5]
[4, 4, 4, 4, 4]
编辑
另一种显示@JensB所解释内容的方法是运行下面的代码。它准确地显示了每个迭代中发生的情况:
some_list=[1,2,3,4,5]
打印(一些列表)
对于某些列表中的每一项:
一些列表[每个]=4
打印(“部分列表[”+str(每个)+“]=4”)
打印(一些列表)
[1, 2, 3, 4, 5]
一些_列表[1]=4
[1, 4, 3, 4, 5]
一些_列表[4]=4
[1, 4, 3, 4, 4]
一些_列表[3]=4
[1, 4, 3, 4, 4]
一些_列表[4]=4
[1, 4, 3, 4, 4]
一些_列表[4]=4
[1, 4, 3, 4, 4]
最好使用枚举()
,这样您就可以跳过范围(len())
:
some_list=[1,2,3,4,5]
对于i,枚举中的项(一些列表):
某些_列表[i]=4
打印(一些列表)
[4, 4, 4, 4, 4]
这将通过索引将some\u列表中的每个项目更改为4
为什么你的方式行不通
您可能会犯这样的思维错误:列表中的第一项具有索引0,而不是1:)
“按你的方式做”将是:
some_list=[1,2,3,4,5]
打印(一些列表)
对于某些列表中的每一项:
某些_列表[each-1]=4
打印(一些列表)
[1, 2, 3, 4, 5]
[4, 4, 4, 4, 4]
编辑
另一种显示@JensB所解释内容的方法是运行下面的代码。它准确地显示了每个迭代中发生的情况:
some_list=[1,2,3,4,5]
打印(一些列表)
对于某些列表中的每一项:
一些列表[每个]=4
打印(“部分列表[”+str(每个)+“]=4”)
打印(一些列表)
[1, 2, 3, 4, 5]
一些_列表[1]=4
[1, 4, 3, 4, 5]
一些_列表[4]=4
[1, 4, 3, 4, 4]
一些_列表[3]=4
[1, 4, 3, 4, 4]
一些_列表[4]=4
[1, 4, 3, 4, 4]
一些_列表[4]=4
[1, 4, 3, 4, 4]
在列表上迭代时,您得到的是实际的项目,而不是索引(因为索引通常是无用的)
实际上,如果您只需要迭代索引,您可以这样做:
Loop 1: -> [1, 2, 3, 4, 5]
^
position 1 = 4.
Output: -> [1, 4, 3, 4, 5]
Loop 2: -> [1, 4, 3, 4, 5]
^
position 4 = 4.
Output: -> [1, 4, 3, 4, 4]
Loop 3: -> [1, 4, 3, 4, 4]
^
position 3 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
Loop 4: -> [1, 4, 3, 4, 4]
^
position 4 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
Loop 5: -> [1, 4, 3, 4, 4]
^
position 4 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
但要用单个项目替换列表中的所有项目,只需创建一个新项目:
for i in range(len(your_list))
或者,如果您希望修改现有列表:
your_list = [4] * len(your_list)
此外,您不应命名任何变量列表
。这将隐藏内置的list()
函数,该函数非常有用,例如,如果您想在列表中打开一个iterable(在list
被隐藏的情况下,您必须使用[x代表iterable中的x]
而不是list(iterable)
。在对列表进行迭代时,您得到的是实际项目,而不是索引(因为索引通常是无用的)
实际上,如果您只需要迭代索引,您可以这样做:
Loop 1: -> [1, 2, 3, 4, 5]
^
position 1 = 4.
Output: -> [1, 4, 3, 4, 5]
Loop 2: -> [1, 4, 3, 4, 5]
^
position 4 = 4.
Output: -> [1, 4, 3, 4, 4]
Loop 3: -> [1, 4, 3, 4, 4]
^
position 3 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
Loop 4: -> [1, 4, 3, 4, 4]
^
position 4 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
Loop 5: -> [1, 4, 3, 4, 4]
^
position 4 = 4. (it is already 4)
Output: -> [1, 4, 3, 4, 4]
但要用单个项目替换列表中的所有项目,只需创建一个新项目:
for i in range(len(your_list))
或者,如果您希望修改现有列表:
your_list = [4] * len(your_list)
此外,您不应命名任何变量list
。这会隐藏内置的list()
函数,该函数非常有用,例如,如果您想在列表中打开一个iterable(当list
被隐藏时,您必须使用[x代表iterable]
而不是列表(iterable)
).…我买的这个Python类根本没有解释“each”的功能,我以为它只是自动地做了(I=0,I一些清单[5]=
没有发生……我买的这个Python类根本没有解释“each”的功能,我以为它只是自动地做了(I=0,I一些清单[5]=
不会发生。仅供参考,您永远不应该调用隐藏内置list()函数的list
。请阅读python文档,了解python中迭代列表的工作原理。您得到的是项目,而不是索引(因为索引通常是无用的)。实际上,如果您只需要迭代索引,您可以对范围内的i(len(list))执行。
。但要实际使用单个项替换列表中的所有项,您只需创建一个新项:list=[4]*len(list)
哦,天哪,我希望阅读