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)
哦,天哪,我希望阅读