Python

3、List和tuple

2019-04-26  本文已影响3人  代码充电宝

(1)List

L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
print L
# 空list
empty_list = []
L = ['Michael', 100, True]
len(L)
L = [95.5,85,59]
print L[0]
print L[1]
print L[2]
print L[3]
L = [95.5, 85, 59]
print L[-1] #倒数第一
print L[-2] #倒数第二
print L[-3] #倒数第三
print L[-4] #倒数第四,越界报错
>>> L = ['Adam', 'Lisa', 'Bart']
>>> L.append('Paul')
>>> print L
['Adam', 'Lisa', 'Bart', 'Paul']
>>> L = ['Adam', 'Lisa', 'Bart']
>>> **L.insert(0, 'Paul')**
>>> print L
['Paul', 'Adam', 'Lisa', 'Bart']
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L.pop()
'Paul'
>>> print L
['Adam', 'Lisa', 'Bart']

>>> L.pop(1)
'Lisa'

>>> print L
['Adam', 'Bart']
L = ['Adam', 'Lisa', 'Bart']
L.reverse()
print(L) # ['Bart', 'Lisa', 'Adam']
>>> L[2] = 'Paul'
>>> print L

L = ['Adam', 'Lisa', 'Paul']
>>> L[-1] = 'Paul'
a,b = [1,2]
c,d = (3,4)
print(a,b)
print(c,d)

# ValueError: too many values to unpack (expected 2)
# L = [1,2,3]
# e,f = L

(2)tuple

>>> t = ('Adam', 'Lisa', 'Bart')
>>> t[0] = 'Paul'

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
t = ()
print t # ()
>>> t = (1)
>>> print t
1
>>> t = (1,)
>>> print t
(1,)
>>> t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])

不是说tuple一旦定义后就不可变了吗?怎么现在又变了?
别急,我们先看看定义的时候tuple包含的3个元素:

image.png

当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:

image.png

表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

上一篇 下一篇

猜你喜欢

热点阅读