列表
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。
Python列表方法
list.append(x)
把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。
>>> a.append(3) >>> a [1, 2, 3]
list.extend(L)
将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L。
>>> b=[7,8,9] >>> a.extend(b) >>> a [1, 2, 3, 5, 7, 8, 9]
list.insert(i, x)
在指定位置插入一个元素。例如 a.insert(0, x) 会插入到整个列表之前
>>> a.insert(0,111) >>> a [111, 1, 2, 3, 5, 7, 8, 9]
list.remove(x)
删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
>>> a.remove(7) >>> a [111, 1, 2, 3, 5, 8, 9]
list.pop([i])
从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。
>>> a.pop() #删除最后一个元素 9 >>> a [111, 1, 2, 3, 5, 8] >>> a.pop(4) # 删除索引为四的元素 5 >>> a [111, 1, 2, 3, 8]
list.clear()
从列表中删除所有元素。相当于 del a[:]。
>>> a.clear() >>> a []
list.index(x)
返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。
>>> a=[11,22,44,11,66,33,11] >>> a.index(11) 0
list.count(x)
返回 x 在列表中出现的次数。
>>> a.count(11) 3
list.sort()
对列表中的元素就地进行排序。
>>> a.sort() >>> a [11, 11, 11, 22, 33, 44, 66]
list.reverse()
就地倒排列表中的元素。
>>> a.reverse() >>> a [66, 44, 33, 22, 11, 11, 11]
list.copy()
返回列表的一个浅拷贝。等同于 a[:]。
>>> b=a.copy() >>> b [66, 44, 33, 22, 11, 11, 11]
元组
元组的特性
- 比列表速度快
- 不可变类型,对数据写保护
定义元组
>>> t = (1,2,3,4) >>> t (1, 2, 3, 4) >>> type(t) <class 'tuple'>
字典
字典是另一种可变容器模型,且可存储任意类型对象
字典的特性
- 字典是无序的
- 自带去重功能
- 查询速度比列表快
- 比列表占用的内存多
为什么字典查询速度快?
因为他是hash类型。
哈希算法将任意以长度的二进制映射为较短的固定长度的二进制,这个小的二进制称为哈希值。哈希值是一段数据唯一且及其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改一个字母,随后的哈希都将改变。要找到散列为同一个值的两个不同的输入,在计算上是不可能的。所以数据的哈希值可以校验数据的完整性。一般用于快速查找和加密算法。
dict会把所有的key变成哈市表,然后将这个表进行排序。查找时python会先把这个key hash成一个数字,去hash表中查找这个key在hash表中的索引,然后拿这个索引去此key对应的value的内存地址那取值。
字典的操作
>>> D={} >>> D['name'] = 'han' #添加键值对 >>> D['user'] = 'qian' >>> print(D) {'user': 'qian', 'name': 'han'} >>> D.keys() #返回所有的键 dict_keys(['user', 'name']) >>> D.values() #返回所有的值 dict_values(['qian', 'han']) >>> D.items() #以元组的形式返回键值对,效率低 dict_items([('user', 'qian'), ('name', 'han')]) >>> D.get('name','Error') #判断键是否存在 'han' >>> D.get('fd','Error') 'Error' >>> 'host' in D #判断'host'是不是D的键名 False >>> 'name' in D True >>> print('I name is %(name)s' % D) #格式化输出 I name is han >>> D.pop('name') #删除键 'han' >>> D {'user': 'qian'}
字典生成式
>>> D = {i:i*2 for i in range(4)} >>> D {0: 0, 1: 2, 2: 4, 3: 6}