list(列表)
创建
属于python内置的一种数据类型。list是一种有序集合,是python中最常见的数据类型。可以任意添加和删除其中的元素,索引从0开始。
1 | >>> list1 = ['Tom', 'Alice', 'Kevin', 'Bill'] |
也可以不同类型组合
1 | >>> list2 = ['Tome', 20, True, 23.2] |
获取list集合的长度
1 | >>> len(list1) |
组合
1 | >>> list1 + list2 |
重复
1 | >>> list1 * 3 |
元素是否存在于列表中
1 | >>> 2 in [1, 2, 3] |
迭代
1 | >>> for x in [1, 2, 3]: |
访问
访问list集合中的数据:用索引来找出每一个位置对应的值
1 | >>> list1[0] |
当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界, 索引范围0 到 len(list)-1
当然也可反向取值,用负数做索引
1 | >>> list1[-1] |
也是存在范围的,倒数第五个就越界了。
更新
可以用append()方法追加列表项
1 | >>> list1.append('Jason') |
也可以用insert()把元素插入到指定的位置
1 | >>> list1.insert(2, 'Jack') |
用pop()方法来删除指定的元素,返回被你删除的元素
1 | >>> d = list1.pop(2) |
如果不传索引默认删除最后一项
1 |
|
关于删除还可以使用del语句来实现删除列表的元素或者删除整个list
1 | >>> del list2[3] |
有兴趣的还可以查查remove()方法的使用。
如果要修改某一个值,直接用索引给对应的位置赋值
1 | >>> list1[1] = 'Rose' |
list元素也可以是另一个list,比如:
1 | >>> list3 = [1, 2, 3] |
可以把l看成一个二维数组了,可以有三维,四维….
1 | >>> l[3][1] |
Python列表函数&方法
- cmp(list1, list2) 比较两个列表的元素
- len(list) 列表元素个数
- max(list) 返回列表元素最大值
- min(list) 返回列表元素最小值
- list(seq) 将元组转换为列表
- list.append(obj) 在列表末尾添加新的对象
- list.count(obj) 统计某个元素在列表中出现的次数
- list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
- list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
- list.insert(index, obj) 将对象插入列表
- list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
- list.remove(obj) 移除列表中某个值的第一个匹配项
- list.reverse() 反向列表中元素
- list.sort([func]) 对原列表进行排序
tuple (元组)
Python的有序列表元组与列表类似,不同之处在于元组的元素一旦初始化就不能修改,列表使用方括号,元组使用小括号。
创建
使用逗号分隔
1 | >>> tuple1 = ('Tom', 'Jack', 'Rose') |
tuple不能修改,没有append()和insert()这样的方法,可以正常使用tuple1[0]但不能赋值。
因为tuple不可变它的优势就是代码更安全,如果有可能建议尽量tuple代替list使用
访问tuple
1 | >>> tuple1[0] |
只有一个元素的定义
1 | >>> t = (1) |
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,来消除歧义:
1 | >>> t = (1,) |
tuple元素的取值、删除、运算,索引截取包括内置函数都和list一致,
需要注意的是,元组的元素是可以为list的,什么意思呢,我们来看一下
1 | >>> t = ('a', 'b', ['c', 'd'], 'e') |
需要注意的是这个时候元组的元素list是可以修改更新的
1 | >>> t[2][0] = 'f' |
dict(字典)
字典是另一种可变容器模型,且可存储任意类型对象,dict的全称是dictionary,也可以理解为map,它是使用key-value进行存储,使用字典采用花括号(大括号){}
特点: 占用空间大,查找速度快,不会随着字典的大小影响查找效率
创建
1 | >>> dict1 = {'Jack' : 20, 'Jason' : 21, 'Alice' : '18'} |
特点:
key在字典中是唯一的不可变的,如果重复,后面的会覆盖前面的,变量不能充当key
value不需要唯一并且可以取任何数据类型,可以是标准的对象,也可以是用户定义的对象
访问
根据key查找value
1 | >>> dict1['Jack'] |
如果key不存在则会报错
1 | >>> dict1['Bill'] |
所以我们可以判断当前字典中是否存在来规避出现错误
1 | >>> 'Bill' in dict1 |
修改
找出对应的key的位置直接赋值
1 | >>> dict1['Jason'] = 23 |
删除
删除操作跟list类似这不过字典是根据key来删除某一项
1 |
|
字典内置函数&方法
- mp(dict1, dict2)比较两个字典元素。
- len(dict) 比较两个字典元素。
- str(dict) 输出字典可打印的字符串表示
- type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
- dict.clear() 删除字典内所有元素
- dict.copy() 返回一个字典的浅复制
- dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
- dict.has_key(key) 如果键在字典dict里返回true,否则返回false
- dict.items() 以列表返回可遍历的(键, 值) 元组数组
- dict.keys()以列表返回一个字典所有的键
- dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
- dict.update(dict2) 把字典dict2的键/值对更新到dict里
- dict.values() 以列表返回字典中的所有值
- pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
- popitem() 随机返回并删除字典中的一对键和值
set(集合)
set只能存储key, 同样不能重复
它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。
创建
1 | >>> s1 = set([1, 2, 3]) |
注意,传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list
重复元素 无效会被自动过滤 只保留唯一
1 | >>> s1 = set([1,2,3,4,2,3,1]) |
集合添加
python 集合的添加有两种常用方法,分别是add和update。
集合add方法:是把要传入的元素做为一个整个添加到集合中
1 | >>> s1 = set('123') |
集合update方法:是把要传入的元素拆分,做为个体传入到集合中
1 | >>> s1.update('789') |
删除
集合删除操作方法:remove
1 | >>> s1.remove('456') |
操作符
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
1 | >>> s1 = set([1, 2, 3]) |
python符号 | 含义 |
---|---|
- | 差集,相对补集 |
& | 交集 |
丨 | 合集,并集 |
!= | 不等于 |
== | 等于 |
in | 成员关系 |
not in | 不是成员关系 |
1 | >>> s1 = set([1, 2, 3]) |