列表就是一个开放的大仓库,可以放置任意东西,并能增删改查。
但元组就是一个封闭的仓库,一旦定义就不能改变(不能增删改)。
若真想"改变"元组,也不是没有办法滴:
1 >>> tuple1 = (1, 2, 4, 5) 2 3 >>> tuple1 = tuple1[:2] + (3,) + tuple1[2:] 4 5 >>> print(tuple1) 6 (1, 2, 3, 4, 5)
咋一看,不是可以更改吗?!No!No!No!先上代码:
1 >>> tuple1 = (1, 2, 4, 5) 2 3 >>> print(id(tuple1)) #使用id()查看变量的内存地址。 4 31366184 5 6 >>> tuple1 = tuple1[:2] + (3,) + tuple1[2:] 7 8 >>> print(id(tuple1)) #两次的tuple1的内存地址不相同,这下看官明白了没? 9 60659496 10 11 >>> print(tuple1) 12 (1, 2, 3, 4, 5)
再说说为什么称元组孤单呢?
这些都是列表的方法,只有红框中的count()跟index()是元组适用的。
另外列表有列表推导式,而元组是没有元组推导式,但是它却能创造出生成器。我在这里只能说一声元组真是悲哀啊:
元组啊,元组啊,你能创造个生成器,但却不是姓元组的,看来你注定孤独一生了。
>>> tuple2 = (x**2 for x in range(10)) #tuple2的类型是一个生成器(generator) >>> type(tuple2) #不能直接像元组那样打印元素了。 <class 'generator'> >>> print(tuple2) <generator object <genexpr> at 0x000000000308BEB8> #若想看里面的元素只能通过next()或__next__()方法 >>> next(tuple2) 0 >>> next(tuple2) 1 >>> next(tuple2) 4 >>> next(tuple2) 9 >>> next(tuple2) 16 >>> next(tuple2) 25 >>> next(tuple2) 36 >>> next(tuple2) 49 >>> next(tuple2) 64 >>> next(tuple2) 81