需要澄清Python中的for循环逻辑吗

需要澄清Python中的for循环逻辑吗,python,for-loop,Python,For Loop,输出应该是[2,18,6,16,10,14] my_list = [1, 9, 3, 8, 5, 7] for number in my_list: number = 2 * number print my_list 问题是它打印的是相同的my_列表值。逻辑number=2*number甚至没有执行?您可以在列表中快速执行此操作: my_list = [1,9,3,8,5,7] new_list = [2*x for x in my_list] 代码的问题在于,当您在

输出应该是
[2,18,6,16,10,14]

my_list = [1, 9, 3, 8, 5, 7]

for number in my_list:
    number = 2 * number

print my_list     

问题是它打印的是相同的
my_列表
值。逻辑
number=2*number
甚至没有执行?

您可以在
列表中快速执行此操作:

my_list = [1,9,3,8,5,7]
new_list = [2*x for x in my_list]


代码的问题在于,当您在
my_list
中循环时,
number
而不是列表中的变量;它只是那个变量的值。因此,更改该值不会更改原始变量。

写入该值的方式不会修改现有列表。您需要类似于列表理解的内容,您可以将其分配回
my\u list

my_list = [number * 2 for number in my_list]

您必须将该值重新分配给列表中的项目

my_list = [1,9,3,8,5,7]

for i, number in enumerate(my_list):
    my_list[i] = 2 * number

问题是您正在更新
编号
而不是
我的列表
。列表理解更可取,但这里有一个明确的方法来做同样的事情,突出你的问题所在:

my_list = [1,9,3,8,5,7]
i=0

for number in my_list:
    # Your code here
    my_list[i]=2*number
    i += 1
print my_list

祝你好运

您不是在更新列表,您只是在更新number变量:

for number in my_list:
    number = 2 * number
有几种方法可以做到这一点:

使用枚举:

my_list = [1, 9, 3, 8, 5, 7]

for index,number in enumerate(my_list):
    my_list[index] = 2 * number

print my_list     
使用列表理解:

my_list = [2*x for x in my_list]
使用Lambda和map:

my_list = map(lambda x: 2*x, my_list)