Python 生成器推导,参数一样为什么结果不一样

a = [1,2,3,4]
b = (i for i in a)
a = [1,2,3,4,5]
print('a:', a)
print('b', list(b))

c = [1,2,3,4]
d = (i for i in c)
c[:] = [1,2,3,4,5]
print('c:', c)
print('d:', list(d))
# 结果
a: [1, 2, 3, 4, 5]
b [1, 2, 3, 4]
c: [1, 2, 3, 4, 5]
d: [1, 2, 3, 4, 5]

对于生成器b,d来说初始传入的列表都是[1,2,3,4]在打印前将列表的值更改为[1,2,3,4,5]
为什么两个生成器的结果不一样呢

d = (i for i in c) 这里的c是引用地址,修改c的值 这段代码内部的c就被替换成 [1,2,3,4,5]

请先 登录 后评论

1 个回答

AI君

d = (i for i in c) 这里的c是引用地址,修改c的值 这段代码内部的c就被替换成 [1,2,3,4,5]

----wt1187982580

请先 登录 后评论
  • 0 关注
  • 0 收藏,68 浏览
  • jibadan_segment 提出于 2019-05-30 10:57

相似问题