文章目录
- 一、元组
- 1.1、元组的初始化
- 1.2、元组的解包
- 1.3、元组的比较运算
- 1.4、元组的其他操作
- 二、集合 set
- 2.1、集合的初始化
- 2.2、集合的常用操作
- 2.3、使用 for 循环遍历集合
- 三、字典 map
- 3.1、字典的初始化
- 3.2、字典的常用操作
- 3.3、使用 for 循环遍历字典
- 四、补充
一、元组
元组跟列表类似,只是 不支持 动态添加、删除元素、修改元素。
1.1、元组的初始化
元组 需要用 小括号 括起来,中间的元素用 逗号隔开。
注意,如果 初始化 只包含 一个元素 的元组,需要在该元素 后添加逗号。
a = () # 初始化一个空元组
b = (1, 2) # 含有2个整数的元组
c = 6, "Python", 3.14 # 小括号可以省略,等价于(6, "Python", 3.14)
d = (5,) # 注意不能写成(5),(5)表示整数5
e = 5, # 等价于(5,)
print(a, b, c, d, e)
"""output
() (1, 2) (6, 'Python', 3.14) (5,) (5,)
"""
1.2、元组的解包
t = 12345, 54321, "Hello!" # 初始化一个元组
x, y, z = t # 将元组解包,将元组内的三个值按顺序赋值给x、y、z
print(x, y, z)
"""output
12345 54321 Hello!
"""
所以,2. 判断语句
中学习的 交换操作,本质上是 元组的解包:
a, b = 3, 4 # 将元组(3, 4)解包,分别赋值给a、b
a, b = b, a # 将元组(b, a)解包,分别赋值给a、b
同样地,6. 函数
中 函数返回多个值,本质上也是 返回了一个元组:
def calc(x, y):
return x + y, x * y # 等价于 return (x + y, x * y)
x, y = 3, 4
s, p = calc(x, y) # 将(x + y, x * y)解包,分别赋值给s、p
print(s, p)
1.3、元组的比较运算
元组和列表均支持 比较运算符:==
、!=
、>
、<
、>=
、<=
等,按字典序 进行比较。
1.4、元组的其他操作
元组的 下标访问元素、循环遍历、切片、加法和乘法运算 等操作,都 与列表相同。
二、集合 set
集合是 Python 中最常用的数据结构之一,用来 存储不同元素。注意,集合中的元素是 无序的。
2.1、集合的初始化
创建集合 用 花括号 或 set()
函数。注意:创建 空集合 只能用 set(),不能用 {},因为 {} 创建的是 空字典,会在下一小节里介绍字典。
集合常见的初始化方式:
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} # 会自动去除重复元素
print(basket) # 重复的元素已经去除了
s = set() # 初始化一个空列表
print(s)
a = [1, 2, 1, 3, 1]
b = set(a) # 将列表转化成集合,一般是为了去重。
c = list(b) # 将集合转化回列表
print(b, c)
x = "abracadabra"
a = set(x) # 将字符串中的每个字符存到集合中
b = str(a) # 注意,这里并不能将集合转化回原字符串,而是用格式化表示集合中的内容
print(a, b)
"""output
{'apple', 'orange', 'banana', 'pear'}
set()
{1, 2, 3} [1, 2, 3]
{'r', 'a', 'c', 'b', 'd'} {'r', 'a', 'c', 'b', 'd'}
"""
2.2、集合的常用操作
假设 a
表示一个集合。
函数 | 功能 |
---|---|
len(a) | 返回集合中包含的元素数量 |
a.add(x) | 在集合中添加一个元素 |
a.remove(x) | 删除集合中的 x ,如果 x 不存在,则报异常 |
a.discard(x) | 删除集合中的 x ,如果 x 不存在,则不进行任何操作 |
x in a | 判断 x 是否在 a 中 |
x not in a | 判断 x 是否不在 a 中 |
a = {1, 2, 3}
print(len(a)) # 输出3
a.add(4)
print(a) # 输出 {1, 2, 3, 4},注意集合中的元素是无序的。
a.remove(2)
print(a) # 输出 {1, 3, 4}
# a.remove(5) # 因为5不存在,所以会报异常
a.discard(5) # 因为5不存在,所以不进行任何操作
print(a) # {1, 3, 4}
2.3、使用 for 循环遍历集合
类似于列表,集合也可以用 for ... in ...
的形式遍历。例如:
a = {1, 2, 3}
for x in a: # 循环遍历整个集合
print(x, end=' ')
三、字典 map
字典 是 Python 中最常用的数据结构之一,用来 存储 映射关系。注意,字典中的元素是 无序的。
不同于列表,字典 是 以 key 进行索引 的,可以将 每个 key 映射到某个 value。key 可以是 任何不可变类型,常用 可以作为 key的类型 有 数字 和 字符串。列表 因为是 可变的,所以 不能作为 key。value 可以是 任意类型。
3.1、字典的初始化
创建字典 用 花括号 或 dict()
函数。
tel = {'jack': 4098, 'sape': 4139} # 创建一个字典
print(tel) # 输出 {'jack': 4098, 'sape': 4139}
a = dict() # 创建一个空字典
a[123] = "abc" # 在字典中插入一个key-value对
a[456] = "def" # 在字典中插入一个key-value对
print(a) # 输出 {123: 'abc', 456: 'def'}
b = list(a) # 将字典的关键字转化成列表
print(b) # 输出[123, 456]
3.2、字典的常用操作
假设 a
表示一个字典。
函数 | 功能 |
---|---|
len(a) | 返回字典中的元素对数 |
a[x] | 获取关键字 x 对应的值,如果 x 不存在,会报异常 |
a.get(x) | 获取关键字 x 对应的值,如果 x 不存在,会返回 None ,不会报异常 |
a.get(x, y) | 获取关键字 x 对应的值,如果 x 不存在,会返回默认值 y ,不会报异常 |
a[x] = y | 在字典中插入一对元素,如果关键字 x 已存在,则将它之前映射的值覆盖掉 |
del a[x] | 删除关键字 x 对应的元素对,如果 x 不存在,会报异常 |
x in a | 检查字典中是否存在关键字 x |
x not in a | 检查字典中是否不存在关键字 x |
a.keys() | 返回字典的所有 key |
a.values() | 返回字典的所有 value |
a.items() | 返回字典的所有由 key 和 value 组成的元组 |
a = {'abc': 1, 'def': 2, 'python': 3} # 初始化一个字典
print(len(a)) # 输出3
print(a['def']) # 输出2
print(a.get('def')) # 输出2
print(a.get('xyz', 5)) # 因为'xyz'不存在,所以输出默认值5
a['hello'] = 4 # 插入一对元素 'hello' -> 4
print(a) # 输出{'abc': 1, 'def': 2, 'python': 3, 'hello': 4}
a['def'] = 5 # 更新'def'映射的值
print(a['def']) # 输出5
del a['python'] # 删除关键字'python'
print(a) # 输出{'abc': 1, 'def': 5, 'hello': 4}
print('hello' in a) # 输出True
print(a.keys()) # 输出dict_keys(['abc', 'def', 'hello'])
print(a.values()) # 输出dict_values([1, 5, 4])
print(a.items()) # 输出dict_items([('abc', 1), ('def', 5), ('hello', 4)])
3.3、使用 for 循环遍历字典
类似于列表,字典也可以用 for ... in ...
的形式遍历。例如:
a = {'abc': 1, 'def': 2, 'python': 3} # 初始化一个字典
for k in a: # 遍历key
print(k, end=' ')
print() # 输出回车
for k in a.keys(): # 遍历key
print(k, end=' ')
print() # 输出回车
for v in a.values(): # 遍历value
print(v, end=' ')
print() # 输出回车
for k, v in a.items(): # 遍历key-value对
print("(%s, %d) " % (k, v), end=' ')
print() # 输出回车
"""output
abc def python
abc def python
1 2 3
(abc, 1) (def, 2) (python, 3)
"""
四、补充
map()
也可以用for ... in ...
的形式遍历。例如:for x in map(int, input().split())
可以遍历一行内 用空格隔开 的每个整数。map()
函数的 返回值 也可以 直接转化成set()
,例如:set(map(int, input().split()))
可以将一行 用空格隔开 的整数存到set()
中。sorted()
函数可以将 列表、元组、集合、字典 排序,并返回一个 新列表。如果 对 字典 排序,则返回字典所有 key 排序 后的 列表。