列表 元组 字典

列表

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

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}
原文地址:https://www.cnblogs.com/hanqian/p/6472177.html