Python中for循环赋值问题请教一下?
像这个表达式 为什么 c = [2,2] 而不是 [1,2]

Python中for循环赋值问题请教一下?
17 回复
问题核心: 在Python的for循环中直接修改循环变量,并不会影响你正在遍历的原始列表(或其他可迭代对象)。这是因为循环变量只是当前迭代项的一个引用副本。
代码示例与解释:
假设你有一个列表,想在循环里把每个元素都加1,新手常会这么写,但这是无效的:
my_list = [1, 2, 3, 4]
for item in my_list:
item = item + 1 # 这行没用!修改的只是临时变量item
print(my_list) # 输出:[1, 2, 3, 4],列表根本没变
正确方法:
你需要通过索引来直接修改列表中的元素:
my_list = [1, 2, 3, 4]
for i in range(len(my_list)):
my_list[i] = my_list[i] + 1 # 通过索引直接赋值
print(my_list) # 输出:[2, 3, 4, 5]
或者,更Pythonic的写法是使用列表推导式,一行搞定:
my_list = [x + 1 for x in my_list]
print(my_list) # 输出:[2, 3, 4, 5]
总结: 想改原列表,就得通过索引或者重建它。
才学疏浅,没看懂
前一个 y 和后一个 y 不是一个东西,写这个代码的建议拖出去打死
展开
for x in y:
for y in a:
c.append(x)
因为还有段代码没贴出来啊
写反了
#6 估计楼主定义了一个 y 全局变量
如果完全第一次运行的话,第一个 y 那里是要出错的(未定义),你可以运行出来是因为 y 是本来已经有值了。你可以 print ( y )看一下
你要的是:
c = [ y for x in a for y in x]
先把单展开的列表解析弄清楚再尝试多展开吧…
列表生成式写错了啦
会报错吧
你前面用过 y 这个变量,这里的后面一个 y in a 是没卵用的
执行顺序的问题
楼主注意一下,在列表解析(推导)式中的双层 for 循环和直接用循环语句的层次是一样的。
c = []
for y in a:
□□□□for x in y:
□□□□□□□□c.append(x)
c = [ x for y in a for x in y]



