在明知不能的情况下向元组添加元素
Dive Into Python 是许多来源之一,它提到:
你不能往元组里添加元素。
但是我好像可以这样做。我的代码是:
from string import find
def subStringMatchExact(target, key):
t = (99,)
location = find(target, key)
while location != -1
t += (location,) # Why is this allowed?
location = find(target, key, location + 1)
return t
print subStringMatchExact("atgacatgcacaagtatgcat", "tg")
输出结果:
(99, 1, 6, 16)
这让我觉得在我初始化 t
的时候,其实并没有真正创建一个元组。有人能帮我理解一下吗?
3 个回答
2
我猜你的意思是,你只是创建了一个新的元组实例,并把它赋值给了 t
。这并没有真正改变原来的 t
对象。
3
t += (location,)
是 t = t + (location,)
的简写,也就是说每次循环的时候,你都在创建一个新的元组,并把它赋值给 t。
12
你正在把两个元组合并成一个新的元组。你并没有改变原来的元组。
> a = (1,)
> b = a
> b == a
True
> a += (2,)
> b == a
False