需要澄清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)