2.5 Python结构数据类型
- 列表
列表是以"[]“包围起来的数据集合,不同成员间使用”,"分隔开,列表中可以包含任何数据类型,也可包含另一个列表
(1)创建一个空列表
>>> []
[]
(2)创建一个只有一个元素的列表
>>> [1]
[1]
(3)创建一个包含不同数据元素的集合
>>> [1,'a',3.14]
[1, 'a', 3.14]
(4)访问列表中的元素,使用索引的方式进行访问,索引从0开始
>>> alist=[1,2,3,4,5]
>>> alist[0]
1
(5)列表支持加法运算
>>> [1,3]+[2,4]
[1, 3, 2, 4]
>>>
(6)同时也支持乘法运算
>>> [1]*3
[1, 1, 1]
- 关于列表的多个操作函数
(1)list.append(x),往列表尾部追加成员x
>>> alist=[1,2]
>>> alist.append(3)
>>> print(alist)
[1, 2, 3]
(2)list.count(x),返回列表中的参数x出现的次数
>>> alist=[1,2,3,1]
>>> print(alist.count(1))
2
(3)list.extend(a),往列表中追加另一个列表a
>>> alist=[1,2,3]
>>> blist=[4,5,6]
>>> alist.extend(blist)
>>> print(alist)
[1, 2, 3, 4, 5, 6]
(4)list.index(x),返回参数x在列表中的序号,x不存在时则报错
>>> alist=[1,2,3]
>>> print(alist.index(2))
1
>>> alist=[1,2,3]
print(alist.index(4))
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
print(alist.index(4))
ValueError: 4 is not in list
(5)list.insert(index,object),往列表中指定位置插入数据
>>> alist=[1,2,3]
>>> alist.insert(2,4)
>>> print(alist)
[1, 2, 4, 3]
(6)list.pop(),删除列表中尾部的成员并返回删除的成员
>>> alist=[1,2,3]
>>> alist.pop()
3
(7)list.remove(),删除列表中的指定成员,有多个则删除第一个,指定成员不存在时则报错
>>> alist=[1,2,3]
>>> alist.remove(2)
>>> print(alist)
[1, 3]
>>> alist=[1,2,3]
>>> alist.remove(4)
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
alist.remove(4)
ValueError: list.remove(x): x not in list
(8)list.sort(),将列表中成员排序,要求其成员可排序,否则报错
>>> alist=[2,3,4,1]
>>> alist.sort()
>>> print(alist)
[1, 2, 3, 4]
存在不可排序成员时报错
>>> alist=[2,1,3,'123']
>>> alist.sort()
Traceback (most recent call last):
File "<pyshell#88>", line 1, in <module>
alist.sort()
TypeError: '<' not supported between instances of 'str' and 'int'
- 元组,元组是特殊的列表,以"()"括起来的数据元素,与列表不同的是,元组一创建就不能改变
(1)创建只有一个元素的元组
>>> (1,)
(1,)
(2)用逗号隔开,可以直接创建一个元组
>>> 1,2
(1, 2)
(3)右边为以元组,自动将元组第一个数值与x绑定,第二个与y绑定
>>> x,y=2,3
>>> x
2
>>> y
3
(4)访问元组的序号为1的元素
>>> atpl=(1,2,3)
>>> atpl[1]
2
(5)让我们试试修改元组的元素,结果报错了
>>> atpl=(1,2,3)
>>> atpl[1]=4
Traceback (most recent call last):
File "<pyshell#107>", line 1, in <module>
atpl[1]=4
TypeError: 'tuple' object does not support item assignment
- 字典,字典是Python中比较特别的一种数据类型,其中成员是以"键:值"对的形式存在的;字典以大括号"{}"包围的以"键:值"对方式声明,与列表不同的是,字典是无序的,也就是说需要通过索引访问字典中的键所对应的值
(1)建立字典
>>> {'a':1,'b':2,'c':3}
{'a': 1, 'b': 2, 'c': 3}
(2)使用键名访问成员
>>> adct={'a':1,'b':2,'c':3}
>>> adct['a']
1
- 字典相关操作函数
(1) dic.clera(),清空字典
>>> adic={'a':1,'b':2,'c':3}
>>> adic.clear()
>>> adic
{}
(2)dic.copy(),复制字典
>>> adic={'a':1,'b':2,'c':3}
>>> bdic=adic.copy()
>>> bdic
{'a': 1, 'b': 2, 'c': 3}
(3)dic.get(k,[default]),获取键k对于的值,不存在则返回default
>>> adic={'a':1,'b':2,'c':3}
>>> adic.get('a')
1
不存在则返回default
>>> adic={'a':1,'b':2,'c':3}
>>> adic.get('d')
#返回空
(4)dic.item(),获取由键和值组成的迭代器
>>> adic={'a':1,'b':2,'c':3}
>>> adic.items()
dict_items([('a', 1), ('b', 2), ('c', 3)])
(5)dic.keys(),获取键的迭代器
>>> adic={'a':1,'b':2,'c':3}
>>> adic.keys()
dict_keys(['a', 'b', 'c'])
(6)dic.pop(k),删除k:v的键值对,并返回删除键所对应的值
>>> adic={'a':1,'b':2,'c':3}
>>> adic.pop('a')
1
>>> adic
{'b': 2, 'c': 3}
(7)dic.update(adict),从另一个字典更新成员(不存在则创建,存在则覆盖)
不存在则创建
>>> adic={'a':1,'b':2,'c':3}
>>> bdic={'d':4}
>>> adic.update(bdic)
>>> adic
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
存在则覆盖
>>> adic={'a':1,'b':2,'c':3}
>>> bdic={'a':4}
>>> adic.update(bdic)
>>> adic
{'a': 4, 'b': 2, 'c': 3}
(8)dic.values(),获取值的迭代器
>>> adic={'a':1,'b':2,'c':3}
>>> adic.values()
dict_values([1, 2, 3])
(9)dic.fromkeys(iter,value),以列表或元组中给定的键建立字典,默认值为value
>>> alist=[1,2,3]
>>> adic.fromkeys(alist)
{1: None, 2: None, 3: None}
>>> alist=['a','b','c']
>>> blist=[1,2,3]
>>> adic.fromkeys(alist,blist)
{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
(10)dic.popitem(),从字典尾部删除K:V,并返回它
>>> adic={'a':1,'b':2,'c':3,'d':4,'e':5}
>>> adic.popitem()
('e', 5)
>>> adic.popitem()
('d', 4)
>>> adic.popitem()
('c', 3)
(11)dic.setdefault(k,default),若字典中存在key值为k的,则返回其对应的值,否则,则在字典中建立一个k:default的字典成员
存在key值对应为k的
>>> adic={'a':1,'b':2,'c':3,'d':4,'e':5}
>>> adic.setdefault('a')
1
不存在key值为k的则创建一个成员
>>> adic.setdefault("f")
>>> adic
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': None}