数据类型及其内置方法2
今日总结
今天主要讲了剩下的几种数据类型及其内置方法。
主要内容
1. 元组
1.1 元组的定义
元组是一种类似列表的数据类型,它可以存储多个数据,且可以存储任意数据类型。但是与列表不同的是,元组一经定义后,就不能修改。元组是一种不可变类型(可哈希)。元组的定义方式有以下几种:
- 使用单一对的括号来构建: ()
- 带逗号的单一元素:(a,)
- 或是直接多个元素用逗号隔开定义:(a, b, c)
- 直接用内置方法定义:tuple()
>>> t = () >>> t () >>> t = (1, 2, 3) >>> t (1, 2, 3) >>> t = (1,) >>> t (1,) >>> t = tuple([1, 2, 3,]) >>> t (1, 2, 3)
1.2 元组的内置方法
元组的不可变性质使它内置方法不多,主要有这两个通用的方法。
count(): 返回指定元素在元组中的数量。
>>> t = (1, 1, 3, 5, 2, '1') >>> t.count(1) 2
index(): 返回指定元素在元组中第一次出现的索引,寻找不到会抛出异常。此外仍然可以指定起始位置和终止位置来寻找。
>>> t.index(2)
4
>>> t.index('2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
1.3 元组的小知识
元组虽然是不可变类型,但当它包含可变类型时,可变类型里面的元素仍然可变。如下所示,
>>> t = (1, 2, 3, [4, 5, 6, 7]) >>> t[1] = 3 # 不可变类型不可以被修改 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>> t[3][1] = 'change' # 列表中的元素被修改,不会报错 >>> t (1, 2, 3, [4, 'change', 6, 7])
2.1 字典的定义
字典同样如元组列表一样可以存储多个数据,但字典是以键值对的形式存入的,可以通过有意义的,对值进行描述的key来寻找对应的值。在定义时,key必须是不可变类型,如整数,元组,字符串等,但是一般都是用字符串才有意义。
字典的定义方式主要有以下几种:
- 直接键值对标明定义:{"k1": v1, "k2": v2}
- 通过内置函数dict定义关键字参数定义:dict(name='a', age=18)
- 在内置函数中传入一个可迭代对象,且该可迭代对象的每一个元素也刚好有两个可迭代的元素:dict( [ [('name', 'aa'), ('age', 18) ] )
>>> d = {}
>>> d = dict(name='a', age=11)
>>> d
{'name': 'a', 'age': 11}
>>> d = dict([('age', 15), ('name', 'h1')])
>>> d
{'age': 15, 'name': 'h1'}
2.2 字典的常用操作及其内置方法
字典的赋值
直接通过[]运算符赋值:如d = {}, d['name'] = 'hello'
>>> d = {}
>>> d['test'] = 2
>>> d
{'test': 2}
字典的取值(两种方式)
直接通过[]取值:当键值不存在时会报错
通过get方法取值,当键值存在时会直接返回值,不存在时会返回默认值None,默认值可以自己设置成需要的类型。(比较重要)
>>> d = {'name': 'abc', 'age': 18}
>>> d['name']
'abc'
>>> d['aaa']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'aaa'
>>> d.get('age')
18
>>> d.get('aaa')
>>> d.get('aaa', '键值不存在')
'键值不存在'
删除操作 (三种方式)
del pop() 和 popitem() 方法
pop(k)方法是弹出指定键值的元素,返回对应的值
popitem()方法是弹出一个随机的键值对。
>>> d
{'name': 'abc', 'age': 18}
>>> d.pop('name')
'abc'
>>> d
{'age': 18}
>>> d['name'] = 'abc'
>>> d
{'age': 18, 'name': 'abc'}
>>> d.popitem()
('name', 'abc')
获取字典的所有键、值、键值对组成的一个生成器对象。
keys(), values(), items() 这些方法返回的对象都可以通过for循环一一取出。
>>> d = {'name': 'egon', 'age': 18}
>>> for k, v in d.items():
... print(k, v)
...
name egon
age 18
字典的for循环取值获取的是字典的key
>>> d
{'name': 'egon', 'age': 18}
>>> for k in d:
... print(k)
...
name
age
字典的其他方法
dict.update():从其他字典或与dict()定义相同的参数来更新原先的字典,这个操作会覆盖原有的键值
>>> d
{'name': 'egon', 'age': 18}
>>> d.update(name='jason')
>>> d
{'name': 'jason', 'age': 18}
>>> d.update({'hobby': 'play'})
>>> d
{'name': 'jason', 'age': 18, 'hobby': 'play'}
dict.setdefault() 当键值不存在时,设置默认值,并返回默认值,键值存在时,返回原先的值
>>> d
{'name': 'jason', 'age': 18, 'hobby': 'play'}
>>> d.setdefault('gender', 'male')
'male'
>>> d
{'name': 'jason', 'age': 18, 'hobby': 'play', 'gender': 'male'}
>>> d.setdefault('age', 'male')
18
dict.clear() 清空字典
dict.fromkeys() 快速为字典增加键key,可以指定一个默认的值
>>> d = {}
>>> d
{}
>>> d.fromkeys('abc', 'set')
{'a': 'set', 'b': 'set', 'c': 'set'}
3.1 集合的定义
集合是一种可有存储多个变量的数据类型,但是集合的元素有所要求,集合的每个元素必须是可哈希的对象,集合内的元素不会重复,集合内的元素是处于无序状态的。集合相比列表字典等数据类型相比,它通常被用来去重,而且集合支持数学中的交集并集差集对称差集运算等。它的定义方式如下:
- 直接定义,集合的表示方式与字典类似,用大括号表示,但是集合内的元素不是键值对:{1, 2, 3, 4, 5, 6}
- 通过内置方法定义set定义,定义空集合也只能通过内置方法:set()
- 传入一个可迭代对象也可以初始化集合:set([1,2 3, 4,])
>>> set()
set()
>>> set([1, 2, 4])
{1, 2, 4}
>>> {1, 3 ,4}
{1, 3, 4}
3.2 集合的常用操作及其内置方法
交集
>>> s1 = {1, 2, 3, 4, 7}
>>> s2 = {2, 3, 5, 6}
>>> s1 & s2
{2, 3}
>>> s1.intersection(s2)
{2, 3}
并集
>>> s1 = {1, 2, 3, 4, 7}
>>> s2 = {2, 3, 5, 6}
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7}
差集
>>> s1 = {1, 2, 3, 4, 7}
>>> s2 = {2, 3, 5, 6}
>>> s1 - s2
{1, 4, 7}
>>> s1.difference(s2)
{1, 4, 7}
对称差集
>>> s1 = {1, 2, 3, 4, 7}
>>> s2 = {2, 3, 5, 6}
>>> s1 ^ s2
{1, 4, 5, 6, 7}
>>> s1.symmetric_difference(s2)
{1, 4, 5, 6, 7}
子集父集
>>> s1 = {1, 2, 3, 4, 5}
>>> s2 = {2, 3}
>>> s1 >= s2
True
>>> s3 = {6}
>>> s1 > s3
False
>>> s1.issuperset(s2)
True
集合的增删改元素
set.update(): 根据另一个可迭代对象的元素来更新原本的集合严元素
set.add(): 添加一个元素
set.remove():移除一个元素
>>> s = set()
>>> s.update('1234')
>>> s
{'4', '1', '2', '3'}
>>> s.add(5)
>>> s
{5, '3', '4', '1', '2'}
>>> s.remove('4')
>>> s
{5, '3', '1', '2'}
至此,Python的数据类型已经全部介绍完毕了,Python的基础数据类型是以后编程的基础,必须熟练掌握它们及其内置方法。Python主要有8种数据类型,可变类型3种,集合,列表,字典,不可变类型5种,整型,浮点型,布尔型,元组,字符串。我们要根据具体的场景选取合适的数据类型,能让我们的编程工作事半功倍。例如需要描述性的信息时,字符串就是一个非常好的选择,当需要不重复的数据且对顺序无要求时,集合就是一个很好的选择,网络中传输数据,选择字典就是最好的方式。

浙公网安备 33010602011771号