在明知不能的情况下向元组添加元素

5 投票
3 回答
9138 浏览
提问于 2025-04-16 16:14

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

撰写回答