python 零基础入门教程第 4 章. 基本数据类型 (三)

发布于 更新于
本文目录
  1. 一、散列类型
  2. 1. 集合
  3. 1.1 集合定义
  4. 1.2 集合的常用操作
  5. 1.2.1 添加元素
  6. 1.2.2 删除元素
  7. 1.2.3 集合运算
  8. 交集
  9. 并集
  10. 补集
  11. 对称差集
  12. 1.3 集合去重
  13. 2. 字典
  14. 2.1 字典的定义
  15. 2.2 字典的索引
  16. 2.3 字典的常用操作
  17. 2.3.1 增加元素
  18. 2.3.2 修改元素
  19. 2.3.3 删除元素
  20. 2.3.4 查询元素
  21. 五,其他类型
  22. 1. 布尔型
  23. 1.1 比较运算符
  24. 1.2 成员运算符
  25. 1.3 布尔型运算
  26. 1.4 布尔类型转换
  27. 1.2 逻辑运算符
  28. 2. None

技术文章测试开发

散列类型用来表示无序集合。

一、散列类型

散列类型用来表示无序集合。

1. 集合

python中集合(set)类型与数学中的集合类型一致,用来表示无序不重复元素的集合。

1.1 集合定义

集合使用一对大括号{}进行定义,元素直接使用逗号隔开。集合中的元素必须是不可变类型。

a = {1, 2, 3, 4, 5, 6}
b = {1,2,'a',('a',),1.5}      # 集合中元素必须是不可变类型

print('a的类型为:', type(a))    # a的类型为: <class 'set'>
print('b的类型为:', type(b))    # b的类型为: <class 'set'>

a的类型为: <class 'set'> b的类型为: <class 'set'>

{[1,2,3],(1,2,3)}

TypeError Traceback (most recent call last)

in <module> ----> 1 {[1,2,3],(1,2,3)}

TypeError: unhashable type: 'list' 注意空集合的定义方式是set()

a = set()                      # 空集合
# 注a = {} 是空字典
print(a)

set()

1.2 集合的常用操作

1.2.1 添加元素

集合添加元素常用函数有两个:add和update

set.add(obj),向集合中添加元素obj,如果集合中不存在则添加

s = {1,2}
s.add(1)
print(s)

{1, 2}

s.add(3)
print(s)

{1, 2, 3} set.update(iterable),向集合中添加多个元素,如何集合中不存在则添加

s = {1,2}
s.update({2,3})
print(s)

{1, 2, 3}

s.update([3,4])
print(s)

{1, 2, 3, 4}

1.2.2 删除元素

set.pop()随机删除并返回集合中的一个元素,如何集合中元素为空则抛出异常。

s = {'a','b','c'}
s.pop()

'a' set.remove(ele),从集合中删除元素ele,如果不存在则抛出异常。

s = {'a','b','c'}
s.remove('a')
print(s)

{'b', 'c'}

s.remove('d')

KeyError Traceback (most recent call last)

in <module> ----> 1 s.remove('d')

KeyError: 'd' set.discard(ele),从集合中删除元素ele,如果不存在不做任何操作

s = {'a','b','c'}
s.discard('d')
print(s)

{'a', 'b', 'c'} set.clear(),清空集合

s = {1,2,3}
s.clear()
print(s)

set()

1.2.3 集合运算

数学符号

python运算符

含义

定义

∩

&

交集

一般地,由所有属于A且属于B的元素所组成的集合叫做AB的交集.

∪

|

并集

一般地,由所有属于集合A或属于集合B的元素所组成的集合,叫做AB的并集

-或\

-

相对补集/差集

A-B,取在A集合但不在B集合的项

^

对称差集/反交集

A^B,取只在A集合和只在B集合的项,去掉两者交集项

交集

取既属于集合A和又属于集合B的项组成的集合叫做AB的交集

s1 = {1,2,3}
s2 = {2,3,4}
s = s1 & s2
print(s)

{2, 3}

并集

集合A和集合B的所有元素组成的集合称为集合A与集合B 的并集 image.png

s1 = {1,2,3}
s2 = {2,3,4}
s = s1|s2
print(s)

{1, 2, 3, 4}

补集

取在集合A中不在集合B中的项组成的集合称为A相对B的补集 image.png

s1 = {1,2,3}
s2 = {2,3,4}
s = s1-s2
print(s)

{1}

对称差集

取不在集合AB交集里的元素组成的集合称为对称差集,也叫反交集 image.png

s1 = {1,2,3}
s2 = {2,3,4}
s = s1^s2
print(s)

{1, 4}

1.3 集合去重

集合具有天生去重的性质,因此可以利用它来去除序列中的重复元素

ls = [1,1,2,3,4,4,3,2,5]
ls = list(set(ls))
print(ls)

[1, 2, 3, 4, 5]

set('aabbcc')

{'a', 'b', 'c'}

2. 字典

因为集合无序,因此不能很便捷的获取特定元素。利用集合元素不重复的特性,使集合中的元素映射值组成键值对,再通过键来获取对应的值。

2.1 字典的定义

python中的字典(dict)数据类型就是键值对的集合,使用一对大括号进行定义,键值对之间使用逗号隔开,键和值使用冒号分割。

字典中的键必须是不可变数据类型,且不会重复,值可以使任意数据类型。

a = {}                      # 空字典
b = {
    1: 2,                   # key:数字;value:数字
    2: 'hello',             # key:数字;value:字符串
    ('k1',): 'v1',          # key:元祖;value:字符串
    'k2': [1, 2, 3],        # key:字符串;value:列表
    'k3': ('a', 'b', 'c'),  # key:字符串;value:元祖
    'k4': {                 # key:字符串;value:字典
        'name': 'feifei',
        'age': '18'
    }
}

print('a的类型为:', type(a))    # a的类型为: <class 'dict'>
print('b的类型为:', type(b))    # b的类型为: <class 'dict'>

a的类型为: <class 'dict'> b的类型为: <class 'dict'>

2.2 字典的索引

字典通过键值对中的键作为索引来获取对应的值。字典中的键是无序的。

d = {1:2, 'key': 'value'}
print(d[1])

2

print(d['key'])

value 这种方式很好的将键和值联系起来,就像查字典一样。

2.3 字典的常用操作

2.3.1 增加元素

字典可以直接利用key索引赋值的方式进行添加元素,如果key存在则修改字典

d = {'name': 'xinlan'}
d['age'] = 18
print(d)

{'name': 'xinlan', 'age': 18} dict.update(new_dict),将new_dict合并进dict中。

d = {'name': 'xinlan'}
n_d = {'age':18, 'sex':'男'}
d.update(n_d)
print(d)

{'name': 'xinlan', 'age': 18, 'sex': '男'}

d.update({'sex': '女','height': 170})  # 当有重复key的时候会覆盖原值
print(d)

{'name': 'xinlan', 'age': 18, 'sex': '女', 'height': 170}

2.3.2 修改元素

直接通过key索引赋值的方式可以对字典进行修改,如果key不存在则添加

d = {'name': 'xinlan'}
d['name'] = 'XinLan'
print(d)

{'name': 'XinLan'}

2.3.3 删除元素

dict.pop(key[,d]),删除指定的key对应的值并返回该值,如果key不存在则返回d,如果没有给定d,则抛出异常

d = {'name': 'xinlan','age': 18}
d.pop('age')

18

print(d)

{'name': 'xinlan'} d.pop('age')

dict.popitem(),任意删除字典dict中的一个键值对,并以二元元组(key,value)的方式返回

d = {'name': 'Felix','age': 18}
d.popitem()

('age', 18)

2.3.4 查询元素

通过key索引可以直接获取key对应的值,如果key不存在则抛出异常。

d = {1:2, 'key': 'value'}
print(d[1])

2

d['name']

KeyError Traceback (most recent call last)

in <module> ----> 1 d['name']

KeyError: 'name' dict.get(key,default=None),获取key对应的value如果不存在返回default

d = {1:2, 'key': 'value'}
d.get(1)

2

d.get('name',0)

0

五,其他类型

1. 布尔型

条件表达式的运算结果返回布尔型(bool),布尔型数据只有两个,True和False表示真和假。

True

True

False  # 注意首字母大写

False

1.1 比较运算符

运算符

描述

实例

==

等于-比较对象是否相等

print(a==b) # False

is

等于-比较对象的内存地址是否相同

print(a is b)

!=

不等于

print(a!=b) # True

>

大于

print(a>b) # False

<

小于

print(a<b) # True

>=

大于等于

print(a>=b) # False

<=

小于等于

print(a<=b) # True

比较运算符运算后的结果是布尔型

a = 1
b = 2
a == b

False

a = 300
b = 300
a is b

False

a == b

True

1.2 成员运算符

运算符

描述

实例

in

如果在指定的序列中找到值返回True,否则False

L = [1, 2, 3, 4, 5] a = 3 print(a in L) # True

not in

如果在指定的序列中没有找到值返回True,否则False

print(a not in L) # False

ls = [1,2,3,4,5]
1 in ls

True

s = ['abcdefg']
'a' in s

False

t = (1,2,3)
4 in t

False

d = {'name': 'Felix','age':18}
'name' in d

True

st = {1,2,3}
1 in st

True

1.3 布尔型运算

布尔型数据可以和数值类型数据进行数学计算,这时True表示整数·1, False表示整数0

True + 1

2

False + 1

1

1.4 布尔类型转换

任意数据都可以通过函数bool转换成布尔型。

在python中,None, 0(整数),0.0(浮点数),0.0+0.0j(复数),""(空字符串),空列表,空元组,空字典,空集合的布尔值都为False,其他数值为True

print(bool(0))
print(bool(0.0))
print(bool(0.0+0.0j))
print(bool(''))
print(bool([]))
print(bool(()))
print(bool({}))
print(bool(set()))
print(bool(None))

False False False False False False False False False

1.2 逻辑运算符

运算符

描述

实例

and

与,如果x为False,x and y返回x的值,否则返回y的值

print(a and b) # True

or

或,如果x为True,x and y返回x的值,否则返回y的值

print(a or b) # True

not

非,如果x为True,返回False,反之,返回True

print(not a) # False

逻辑运算符两边的表达式不是布尔型时,在运算前会转换为布尔型。

True and True

True

True and False

False

0 and 1 # 短路

0

1 and 2

2

True or False

True

False or False

False

1 or 0  # 短路

1

0 or ''  # 短路

''

2. None

None是python中的特殊数据类型,它的值就是它本身None,表示空,表示不存在。

print(None) # 注意首字母大写

None

来源:testingpai

继续阅读