list和tuple
list
python内置的一种数据类型是list
.
list
是一种有序集合,可以随时添加和删除其中的元素.
比如,列出西安的美食,就可以用list
:
>>> food= ['肉夹馍', '臊子面', '秦镇米皮']
>>> food
['肉夹馍', '臊子面', '秦镇米皮']
这个变量food
就是一个list
.
使用 len() 函数可以获取list
元素的个数:
>>> len(food)
3
索引
可以用 索引 来访问 list
中的每一个元素,索引从0开始
>>> food[0]
'肉夹馍'
>>> food[1]
'臊子面'
>>> food[2]
'秦镇米皮'
>>> food[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
当 索引 超过了范围时,会报一个IndexError
的错误.
最后一个元素的索引是len(food) - 1
.
也可以使用-1
直接获取,以此类推也可以使用-2
,-3
来获取
>>> food[-1]
'秦镇米皮'
修改元素
list
是一个可变的有序表,可以使用 append 方法追加元素到末尾:
>>> food.append('肉丸胡辣汤')
>>> food
['肉夹馍', '臊子面', '秦镇米皮', '肉丸胡辣汤']
也可以插入指定位置,使用 insert 方法:
>>> food.insert(1, '甑糕')
>>> food
['肉夹馍', '甑糕', '臊子面', '秦镇米皮', '肉丸胡辣汤']
要删除指定位置的元素,使用 pop(i) 方法,
如果不填i那么默认就是删除最后一个元素.
>>> food.pop(1)
'甑糕'
>>> food
['肉夹馍', '甑糕', '臊子面', '秦镇米皮']
>>> food.pop()
'秦镇米皮'
>>> food
['肉夹馍', '甑糕', '臊子面', '秦镇米皮']
要把某个元素 替换 成另一个元素,可以直接赋值给对应的索引位置:
>>> food[1] = '镜糕'
>>> classmates
['肉夹馍', '镜糕', '臊子面', '秦镇米皮']
list
中的元素类型也可以多样,比如:
>>> L = ['Apple', 123, True]
list
元素也可以是另外一个list
:
>>> food = ['剁椒鱼头', '蛋抱混沌', ['番茄焖面', '可乐鸡翅'], '猪肉白菜饺子']
>>> len(food)
4
如果要拿到 可乐鸡翅 可以用food[2] [0]
如果一个list
一个元素都没有,那长度也是0.
tuple(元组)
tuple
与list
非常相似,但是tuple
一旦初始化就不能修改。
>>> food = ('肉末茄子', '菠萝炒饭', '牛腩米粉')
现在,food 这个tuple
不能变了,
也因为不能变,所以代码更安全。如果可能尽量使用tuple
.
也是这样,当你定义一个tuple
,元素就必需被确定下来.
小问题: 如何去定义一个只有一个元素的tuple
这样吗?
>>> math = (1)
>>> math
1
不对,不对,应该是这样:
>>> math = (1,)
>>> math
(1,)
因为括号既可以表示tuple
,又可以表示数学中的小括号
所以在定义tuple
时需要加一个逗号,
,来消除歧义.
一个’可变的tuple
(滑稽表情)
>>> food = ('黄焖鸡米饭', '蛤蜊蒸蛋', ['拔丝山药', '菠萝咕咾肉'])
>>> food[2][0] = '糖醋排骨'
>>> food[2][1] = '红烧肉'
>>> food
('黄焖鸡米饭', '蛤蜊蒸蛋', ['糖醋排骨', '红烧肉'])