python的list,tuple,dist,set和不可变对象
2016-05-18 17:07
761 查看
首先,list用[],tuple用(),dist用{},set用的是set()。先写这个,然后再说别的
list是有序的集合,可随时增删元素。简单语法如下:
tuple一经初始化就不能改变,没有append(),insert()等方法,由于不可变,所以更安全,能用tuple代替list的时候就用tuple。下面只写一个问题,tuple里面有list元素。要理解的是“指向不变”。t[1]指向一个list对象,这点不能变,需要指向同一个list对象,但是这个list对象本身不能改变
dict使用键-值存储,查找速度快,无论dict多大都不会影响查找速度,而list则越大越慢,但是dict的空间占用很大,list比较节约空间。dict是典型的以空间还时间
set和dict类似,只是不存储value,不能有重复的key
关于不可变对象,str,int都是,而list是可变的
![](http://img.blog.csdn.net/20160518170437785)
在set里的情况
list是有序的集合,可随时增删元素。简单语法如下:
>>> classmate=["mick","Bob","Jack"] #元素下标从0开始,倒着是-1、-2、-3。。。 >>> classmate[0] 'mick' >>> classmate[-1] 'Jack' #追加元素到末尾或指定下标位置 >>> classmate.append("Adam") >>> classmate.insert(1,'Tom') >>> classmate ["mick","Tom","Bob","Jack","Adam"] #删除指定下标元素 >>> classmate.pop(3) 'Jack' >>> classmate ['mick', 'Tom', 'Bob', 'Adam'] #不同的数据类型也可以 >>> L=["thx",123,True] #list的元素可以是list >>> p=[234,345] >>> l=["Jack",p,True] >>> l ['Jack', [234, 345], True] >>> l[1][1] 345
tuple一经初始化就不能改变,没有append(),insert()等方法,由于不可变,所以更安全,能用tuple代替list的时候就用tuple。下面只写一个问题,tuple里面有list元素。要理解的是“指向不变”。t[1]指向一个list对象,这点不能变,需要指向同一个list对象,但是这个list对象本身不能改变
>>> t=(123,["x","y"],True) >>> t[1][1]="a" >>> t (123, ['x', 'a'], True) >>> t[1]=['d','e','f'] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> t[1]=66 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
dict使用键-值存储,查找速度快,无论dict多大都不会影响查找速度,而list则越大越慢,但是dict的空间占用很大,list比较节约空间。dict是典型的以空间还时间
>>> score={"Mick":90,"Tom":70,"Jack":87} >>> score['Mick'] 90 >>> score['Mick']=80 >>> score['Mick'] 80 >>> 'Nimo' in score False >>> score.pop('Tom') 70 >>> score {'Jack': 87, 'Mick': 80} #这个判断dict中有没有那个关键字,若没有,返回后面的内容 >>> score.get("Tom",22222) 22222
set和dict类似,只是不存储value,不能有重复的key
>>> s=set([1,2,2,5,5,3]) >>> s {1, 2, 3, 5} >>> s.add(2) >>> s {1, 2, 3, 5} >>> s.remove(2) >>> s {1, 3, 5} >>> s2=set([2,3,5,6,7]) >>> s&s2 {3, 5} >>> s|s2 {1, 2, 3, 5, 6, 7}
关于不可变对象,str,int都是,而list是可变的
>>> a = 'abc' >>> b = a.replace('a', 'A') >>> b 'Abc' >>> a 'abc'
在set里的情况
>>> l=[1,2,3] >>> s=set(l) >>> s {1, 2, 3} >>> s=set([5,l]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'
相关文章推荐
- 一个python发包的脚本
- Python函数
- Python2与Python3的区别(一):urllib和urllib2与urllib
- Python Tricks(六)—— 删除一个可迭代序列中等于某值的全部元素
- Python中的二维数组(list与numpy.array)
- Python 修饰符的例子
- python字符串连接的N种方式
- python进程池:multiprocessing.pool
- python处理excel
- Python之几种重要的基本类型:元组,列表,字典,字符串,集合
- 快速查询Python脚本语法
- 《Python算法教程》译者序
- selenium+python笔记1
- Python3 连接Mysql数据库
- 关于Python爬虫的书籍推荐
- python2.7和 python3.4的却别
- python接口的调用方法
- python--利用列表推导式快速生成xml格式数据
- python基础深入(元组、字符串、列表、字典)
- Python基础知识之排序法