列表就是一个开放的大仓库,可以放置任意东西,并能增删改查。

但元组就是一个封闭的仓库,一旦定义就不能改变(不能增删改)。

若真想"改变"元组,也不是没有办法滴:

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

 

posted on 2017-10-19 09:22  Gladall  阅读(120)  评论(0编辑  收藏  举报