当我知道我不应该将元素添加到元组时

时间:2011-04-22 15:08:25

标签: python tuples

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 个答案:

答案 0 :(得分:12)

你在一个新元组中连接2个元组。 您没有修改原件。

> a = (1,)
> b = a
> b == a
True
> a += (2,)
> b == a
False

答案 1 :(得分:3)

t += (location,)t = t + (location,)的简写,因此您正在创建一个新的元组实例,并在每次循环时将其分配给t。

答案 2 :(得分:2)

我的猜测是你只是创建一个元组的新实例并将其分配给t。它实际上并没有修改原始的t对象。