Python基础-序列和字典


主要介绍列表、元组、字典的一些基本用法

序列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
序列 包含多项数据,按顺序排列 通过索引访问
常见的序列 字符串 列表 元组
列表和元素很相似 主要区别为元组不可变 列表可变
创建列表 [ele1,ele2,ele3 ...]
创建元组 (ele1,ele2,ele3 ...)
"""
my_list = ['name', 'age', 34]
print(my_list)
my_tuple = ('name', 'age', 44)
print(my_tuple)

# 列表和元组的通用用法

# 索引获取元素 下标从0开始
print(my_list[1])
print(my_tuple[2])
# 子序列 [start:end:step] step表示步长 start end 负数表示倒数第几个
print(my_list[1:])
t1 = (1, 2, 3, 4, 5, 6, 7, 8, 9)
print(t1[2:7:2])

# 加法 结果为两个的总和 列表和元组不能直接相加
l1 = ['a', 'b', 'c']
l2 = ['a', 'f', 'g']
print(l1 + l2)
t1 = ('h', 'this', 'name')
t2 = ('name', 't', 'r')
print(t1 + t2)

# 乘法 重复列表或者元组中的元素 N 遍
l = ['you', 'are', 'good']
print(l * 2)
t = ('oh', 'I', 'know')
print(t * 3)
"""
单个元素的元组 ('hei',) 后面要带逗号 要不然会当成字符串
"""
print(('hei',) * 3 + ('come', 'here'))

# in 判断是否包含某个元素
print('you' in l)
print('oh' not in t)

# 长度len() 最大值max() 最小值min()
# max() min() 要求列表或者元组的元素是相同类型且可以比较
print(len(l))
print(len(t))
print(max(l), min(l))
print(max(t), min(t))
print(max((3, 4, 5, 11, 24, 33, 66, 31, 2)))

# 序列封包和序列解包
# 序列封包:程序把多个值赋值给一个变量,多个值会封装为元组
# 序列解包:程序将序列(元组或者列表等)直接赋值给多个变量
# 序列个元素依次赋值给每个变量

values = 10, 20, 30
print(values)
print(type(values))
a_tuple = tuple(range(1, 10, 2))
a, b, c, d, e = a_tuple
print(a, b, c, d, e)
m, n = ['hello', 'world']
print(m, n)
# 同时封包 解包
x, y, z = 10, 20, 30
print(x, y, z)
x, y, z = y, z, x
print(x, y, z)
# 部分解包 变量前面加* 代表列表
first, second, *rest = range(10)
print(first, second)
print(rest)
列表的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"""
列表的使用
"""
# 创建列表
# 除了[] 还有list() 函数 可以将元组和range()转为列表
a_list = list(('a', '1', 'c'))
print(a_list)
a_list = list(range(1, 5))
print(a_list)
# 同样 有tuple() 函数将列表,range转为元组
print(tuple(a_list))
print(tuple(range(1, 6)))

# 增加列表元素
# append() 追加元素
b_list = ['b', 'h']
c = ['d', 'f']
b_list.append(c)
print(b_list)
# extend() 追加的元组 列表会将里面的元素添加进去
b_list = ['w', 'n']
c = ['r', 'd']
b_list.extend(c)
b_list.extend((10, 9))
b_list.extend(range(1, 4))
print(b_list)
# insert() 插入元素
b_list = ['a', 'b', 'c', 'd', 'e']
b_list.insert(3, 'woo')
b_list.insert(3, ('this', 'no'))
print(b_list)

# 删除列表元素 del 也可以删除变量
del b_list # 后面使用b_list 会报错NameError
c_list = [1, 2, 3, 4]
del c_list[2]
print(c_list)
c_list = list(range(1, 10))
print(c_list)
del c_list[0:7:2]
print(c_list)
# remove() 移除第一个找到的元素 没有的话 ValueError
c_list = ['oh', 'hello', 'this', 'is', 'hello']
c_list.remove('hello')
print(c_list)
# c_list.remove('she') ValueError
# clear() 函数 清空列表
c_list.clear()
print(c_list)

# 修改列表元素
d_list = ['d', 2, 56, 'd']
d_list[1] = 'oh'
print(d_list)
# d_list[4] = 'no' # IndexError
d_list = [1, 2, 3, 4, 5]
d_list[1:3] = ['c', 'd']
print(d_list)
d_list = [1, 2]
d_list[2:2] = ['c', 'd'] # 插入
print(d_list)
d_list = [1, 2, 3, 4, 5, 6]
d_list[1:3] = [] # 删除
print(d_list)
# slice语法不能是单个值 比如字符串会被拆解
d_list = [1, 2]
d_list[1:2] = 'this'
print(d_list)
d_list = list(range(1, 10))
d_list[1:9:2] = ['a', 'b', 'c', 'd'] # 必须和替换值数量一致
print(d_list)

# 其他常用方法
'''
count() 某个元素出现的次数
index() 元素出现的为位置
pop() 列表当成栈 实现出栈功能
reverse() 列表反向
sort() 列表排序
'''
print([20, 1, 33, [2, 20], 20].count(20))
e_list = [2, 30, 'c', 'e', 8, 19, 30]
print(e_list.index(30))
print(e_list.index(30, 2, 7)) # 从第2个之后到第7个开始找
# print(e_list.index('h')) #ValueError 找不到报错
# 栈的操作 先进后出
stack = []
stack.append("first")
stack.append("second")
stack.append("last")
print(stack.pop())
print(stack.pop())
print(stack)
# 反转
d_list = ['a', 'd', 'b']
d_list.reverse()
print(d_list)
# 排序
d_list = [1, 2, -10, 89, 77]
d_list.sort()
print(d_list)
d_list = ['chip', 'ba', 'c', 'carry', 'tha']
# key=len 使用len()函数作为比较 reverse=True 反转
d_list.sort(key=len, reverse=True)
print(d_list)
字典的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"""
字典 key:value 形式 key不能重复
"""
# 创建字典 {} 或者dict() 函数
scores = {'语文': 89, '数学': 90}
print(scores)
# 元组可以作为key 由于key不能改变 列表不能作为key
d1 = {(10, 20): 'test', 'ee': 'dd'}
print(d1)
# 传入多个元组或者列表
d2 = dict([('语文', 20), ('数学', 10)])
print(d2)
d3 = dict([['math', 10], ['english', 20]])
print(d3)
d4 = dict()
# 关键字创建 不能是表达式 不用引号
d5 = dict(h='44', o='tt')
print(d5)

# 基本用法 key 获取 添加 删除 修改 等
dic = {"语文": 55}
print(dic['语文']) # 获取value
dic['数学'] = 90 # 添加
print(dic)
del dic['语文'] # 删除
print(dic)
dic['数学'] = 12 # 修改
print(dic)
print("数学" in dic)
print("英语" not in dic)

# 常用方法
# clear() 清空字典
dd = {'car': 'bmv', 'name': 'john'}
dd.clear()
print(dd)
# get() 和[key] 一样获取value key不存在返回None []会报错
dd = {'car': 'bmv', 'name': 'john'}
print(dd.get('car'))
print(dd.get('age'))
# print(dd['age']) # KeyError
# update 更新字段 有key覆盖value 没有增加key-value
dd = {'car': 'bmv', 'name': 'john'}
dd.update({'car': 'benz', 'age': 30})
print(dd)
# items() keys() values() 获取所有dict_items,dict_keys,dict_values
dd = {'car': 'bmv', 'name': 'john'}
ims = dd.items()
print(ims)
print(type(ims))
print(list(ims))
kys = dd.keys()
print(type(kys))
print(list(kys))
vls = dd.values()
print(type(vls))
print(list(vls))
# pop() 获取指定key的value并删除key-value
dd = {'car': 'bmv', 'name': 'john'}
print(dd.pop('car'))
print(dd)
# popitem() 弹出存储中最后一个key-value 无序
dd = {'car': 'bmv', 'name': 'john'}
print(dd.popitem())
print(dd)
# setdefault() 如果key不存在 设置默认值存入字典并返回value
dd = {'car': 'bmv', 'name': 'john'}
print(dd.setdefault('car', 'benz'))
print(dd)
print(dd.setdefault('age', 80))
print(dd)
# fromkeys() 一般使用dict调用 使用多个key创建字典 value为None 可设置默认值
dd = dict.fromkeys(['a', 'b'])
print(dd)
dd = dict.fromkeys(('a', 'b'), 'woo')
print(dd)

# 使用字典格式化字符串
temp = "名字:%(name)s,职业:%(job)s,年龄:%(age)s"
dd = {'name': 'july', 'job': 'singer', 'age': 30}
print(temp % dd)