【发布时间】:2015-12-21 21:20:35
【问题描述】:
我老了,没有头发可以拔了。我已经阅读了尽可能多的类似问题的答案,因为我可以在 SO 上找到。我有以下代码:
a = [[1,2],[3,4],[4,5]]
b = ['a','b','c']
print('a:',a)
print('b:',b)
c = a[:]
print('c == a:', c==a)
print('c is a:',c is a)
print('id(c) = id(a):', id(c)==id(a))
[x.extend(b) for x in c]
print('c after:',c)
print('a after:',a)`
输出是:
a: [[1, 2], [3, 4], [4, 5]]
b: ['a', 'b', 'c']
c == a: True
c is a: False
id(c) = id(a): False
c after: [[1, 2, 'a', 'b', 'c'], [3, 4, 'a', 'b', 'c'], [4, 5, 'a', 'b', 'c']]
a after: [[1, 2, 'a', 'b', 'c'], [3, 4, 'a', 'b', 'c'], [4, 5, 'a', 'b', 'c']]
我正在寻找显示为“c after:”的结果,但我不明白为什么 a 也被修改了?! 我也试过了
c = list(a)
和
c = copy.copy(a)
当然,简单的 c = a 不能按预期工作。 我错过了什么?! 谢谢。
【问题讨论】:
标签: python list object reference list-comprehension