使用 list 和 tuple
list
- 列表,Python内置的一种数据类型,是一种有序的集合,可随时添加删除其中的元素。
- 表示: classmates = ['Michael', 'Bob', 'Tracy']
- 内部元素可以多种类型,例如:L=['Apple',123,True,'['Michael', 'Bob', 'Tracy']']
这里的 L 可以相当于:['Apple',123,True,classmates]
要拿到 L 中的 'Bob' ,可以 L[3] [1],如同二维数组 - 空列表,N=[]
相关操作:
len() 函数 获取元素个数:
len(classmates),结果为 3;
len(L),注意结果是4
len(N),结果为0使用 索引 访问每一个位置的元素:
classmates[0],得到 Michael;
classmates[1],得到 Bob;
classmates[2],得到 Tracy;
最后元素的索引值是: len(classmates)-1负数索引
classmates[-1],可以得到最后的元素,Tracy,依次类推-2,-3,但别越界,否则报错。修改列表元素
1. append( ) 追加到列表末尾:
classmates.append('Adam') ==> ['Michael', 'Bob', 'Tracy','Adam']
2. insert( ) 插入到指定位置:
索引1处, classmates.insert(1, 'Jack') ==>['Michael', 'Jack','Bob', 'Tracy','Adam']
3. pop( ) 删除列表末尾的元素:
classmates.pop() ==> ['Michael', 'Jack','Bob', 'Tracy']
4. pop(i) 删除指定 i 索引位置上的元素:
classmates.pop(1) ==> ['Michael','Bob', 'Tracy']
5. 索引替换 赋值替换对应索引值上的元素:
classmates.[1] = 'Sarah' ==> ['Michael','Sarah', 'Tracy']
tuple
- 元组,一种有序列表,与 list 相似,但是一旦初始化就无法修改,但正因为这样,所以更安全
- 表示: classmates = ('Michael', 'Bob', 'Tracy')
- 没有上述修改元素的方法,可以使用索引,但同样不能赋值代替元素
-
注意定义时候,tuple 的元素就必须被确定下来:
t=(1,2) - 空元组: t=()
陷阱:
定义一个只有一个元素的元组,如果这么定义: t=(1)
那么,恭喜,定义的不是 tuple,而是 1 这个数。因为 () 既可以表示元组,也可以表示数学公式中的小括号。这就是产生歧义,Python 在这种情况会按照小括号进行计算,计算的结果自然是 1。
正确做法:加个小逗号以消除歧义
t=(1,)
可变的tuple?
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
其实,tuple所说的不可变指的是“指向性不可变”,如下图所示:
而将('a', 'b', ['A', 'B'])改为('a', 'b', ['X', 'Y'])后:
很显然,如果要做个真正不可变的元组,很简单,保证其元素也不可变即可。