菜鸟学python之list和tuple
2017-09-19 16:53
106 查看
list
list 是一种有序的集合,可以随时添加和删除其中的元素。list是一种对象,当我们在创建变量,并且赋值的过程可以理解成这样
shopping=['apple','orange']
1)创建一个list对象,对象里面同时也有很多变量名;
2)[0]位置变量存储'apple'对象的地址,[1]位置变来那个存储'orange'对象地址
3)创建一个shopping变量,存储list对象的地址信息;
list常用操作
1访问元素
1.1用索引来访问 list 中每一个位置的元素,记得索引是从 0 开始的
shopping[2]是存在于对象中用来存储['r','u']对象的地址的变量
shopping[2]此时找到了['r','u']shopping[2][0]就是['r','u']对象中存储'r'地址的变量
2 增加元素
2.1 append从尾部插入
3.1 pop弹出
del是一个语句,不是一个列表的方法。可以删list对象中的变量,也可以删除list的变量
3.4 修改元素
直接使用赋值法
tuple 一旦初始化就不能修改,比如同样是列出shopping的物品单:
不可变的 tuple 有什么意义?因为 tuple 不可变,所以代码更安全。如果可能,能用 tuple 代替 list 就尽量用 tuple
tips:
只有 1 个元素的 tuple 定义时必须加一个逗号 , ,来消除歧义:
之前提到过tuple是不可变对象
![](https://s5.51cto.com/wyfs02/M02/A5/B2/wKioL1nCAOqwLNVmAABJyQEEO58423.png)
小结
不可变对象内部变量不可变
改变的其实是可变list对象中的元素,而tuple中指向list的地址没有发生改变,有点类似于系统编程中操作系统实现不一样,但是给上层提供的api是一样。
list 是一种有序的集合,可以随时添加和删除其中的元素。list是一种对象,当我们在创建变量,并且赋值的过程可以理解成这样
shopping=['apple','orange']
1)创建一个list对象,对象里面同时也有很多变量名;
2)[0]位置变量存储'apple'对象的地址,[1]位置变来那个存储'orange'对象地址
3)创建一个shopping变量,存储list对象的地址信息;
list常用操作
1访问元素
1.1用索引来访问 list 中每一个位置的元素,记得索引是从 0 开始的
>>> shopping=['apple','orange'] >>> shopping[0] 'apple' >>> shopping[1] 'orange' >>> shopping[2] Traceback (most recent call last): File "<pyshell#98>", line 1, in <module> shopping[2] IndexError: list index out of range因此通过索引访问元素一定要记得不能越界,不然就会发生错误。有两种更好的方法访问最后一个元素
>>> shopping[len(shopping)-1] #先计算长度,再减一 'orange' >>> shopping[-1] #默认从后往前计数 'orange'1.2索引访问list中子list的元素
['apple', 'orange', ['r', 'u']] >>> shopping[2] ['r', 'u'] >>> shopping[2][1] 'u'可以理解成shopping变量找到了['apple', 'orange', ['r', 'u']]对象
shopping[2]是存在于对象中用来存储['r','u']对象的地址的变量
shopping[2]此时找到了['r','u']shopping[2][0]就是['r','u']对象中存储'r'地址的变量
2 增加元素
2.1 append从尾部插入
>>> shopping.append('banana') >>> shopping ['apple', 'orange', 'banana']2.2 insert指定位置插入
>>> shopping.insert(1,'banana') #指定位置,前面的数字代表插入后元素所在位置 >>> shopping ['apple', 'banana', 'orange', 'banana'] >>> id(shopping[1]) 43203456 >>> id(shopping[3]) #可以看出,插入同一个值时,没有增加新对象,只是引用了源地址 432034562.3 extend从尾部插入多个元素
>>> shopping.extend([7,8]) >>> shopping ['apple', 7, 8]3 删除元素
3.1 pop弹出
>>> shopping.pop() #按顺序删除,不需要指定具体对象 'banana' >>> shopping ['apple', 'banana', 'orange'] >>> shopping.pop(1) #也可以指定位置,必须使用索引号 'banana' >>> shopping.pop(-1) 'orange' >>> shopping ['apple']3.2 remove指定内容删除
>>> shopping ['apple', 7, 8] >>> shopping.remove(7) >>> shopping ['apple', 8]3.3 del删除
del是一个语句,不是一个列表的方法。可以删list对象中的变量,也可以删除list的变量
>>> del shopping[1] >>> shopping ['apple'] >>> del shopping >>> shopping Traceback (most recent call last): File "<pyshell#126>", line 1, in <module> shopping NameError: name 'shopping' is not definedtips:这三种删除方法,都可以删除list对象中的变量,即使list对象中也有子列表;但是只有del可以删除进行操作的对象变量;
3.4 修改元素
直接使用赋值法
>>> shopping[1]=2 >>> shopping ['apple', 2, 8]tuple
tuple 一旦初始化就不能修改,比如同样是列出shopping的物品单:
>>> shopping=('apple','orange') >>> shopping ('apple', 'orange')现在,shopping 这个 tuple 不能变了,它也没有 append(),insert()这样的方法。其他获取元素的方法和 list 是一样的,你可以正常地使用shopping[0] , shopping[-1] ,但不能赋值成另外的元素。
不可变的 tuple 有什么意义?因为 tuple 不可变,所以代码更安全。如果可能,能用 tuple 代替 list 就尽量用 tuple
tips:
只有 1 个元素的 tuple 定义时必须加一个逗号 , ,来消除歧义:
>>> t=(1) >>> t 1 >>> t = (1,) >>> t (1,)Python 在显示只有 1 个元素的 tuple 时,也会加一个逗号 , ,以免你误解成数学计算意义上的括号
之前提到过tuple是不可变对象
>>> shopping[1]=(2) Traceback (most recent call last): File "<pyshell#149>", line 1, in <module> shopping[1]=(2) TypeError: 'tuple' object does not support item assignment 对象不支持赋值tuple对象中的用来存储地址的变量名一旦固定就不能改变,当我们尝试赋值一个不可变对象给tuple内部变量时就会发生错误;那是不是赋值一个可变对象,就可以改变元素的值呢
>>> t=('a','b',['a','b']) >>> t ('a', 'b', ['a', 'b']) >>> id(t[2][1]) 6326368 >>> id(t[1]) #t[1]和['a','b']对象中的[1]引用同一个对象 'b' 6326368 >>> t[2][0]='x' >>> t ('a', 'b', ['x', 'b'])
![](https://s5.51cto.com/wyfs02/M02/A5/B2/wKioL1nCAOqwLNVmAABJyQEEO58423.png)
小结
不可变对象内部变量不可变
改变的其实是可变list对象中的元素,而tuple中指向list的地址没有发生改变,有点类似于系统编程中操作系统实现不一样,但是给上层提供的api是一样。
相关文章推荐
- python 中list、tuple等有序序列
- 【01 Python 笔记——list, tuple】
- 菜鸟学python(11)list列表基本操作
- python中的list和tuple
- Python菜鸟--列表(List)
- python 中的“集合”(list、tuple、set、dict)
- Python基础-List和 Tuple 类型
- Python基础(list和tuple)可变集合和‘不可变’集合
- Python Tuple List Dictionary
- Python中LIst与Tuple的对比总结
- python 获取list tuple dict中最大和最小元素的操作
- python的dict,set,list,tuple应用详解
- Python学习记录——Python tuple、list、dict
- 003——Python内建数据结构列表(list)、元组(tuple)、字典(dict)、集合(set)
- Python学习笔记<list,tuple,range再探>
- Python 学习笔记(二):List and Tuple
- 【python学习笔记】6.list和tuple的操作
- Python学习随笔二:list和tuple
- python中list和tuple的用法及区别
- [Python]list, tuple, dict的区别