Python学习笔记
43-列表
python
# 列表主要是用来存储多个数据.列表是有序的集合
list_1 = [] # 创建一个空的列表
list_2 = [12, 34, 56, True, 'abc'] # 创建一个列表
# 列表的访问,通过下标访问列表中的元素,下标默认从0开始,0表示第一个元素,-1表示最后一个元素
list_3 = [1, 2, 3, False, True, 'abc']
print(list_3[0]) # 1
print(list_3[-1]) # abc
# 修改列表中的元素
list_3[0] = 100
print(list_3) # [100, 2, 3, False, True, 'abc']
# 遍历列表
for item in list_3: # item表示列表中的每一个元素
print(item)
for i in range(len(list_3)): # i表示下标
print(list_3[i])
for index, value in enumerate(list_3): # 同时获取下标和值
print(index, value)
44-列表元素的合并、重复、判断
python
list_1 = ["佛跳墙", "跳水", "跳河"]
list_2 = [1, 2, 3, True]
print(list_1, list_2)
print(list_1 + list_2) # 列表的合并
print(list_1 * 4) # 列表的复制(重复)
list_3 = [1, 2, 3, "张三", "张五", "张四"]
if "张三" in list_3:
print("张三在列表中")
else:
print("张三不在列表中")
if "张六" not in list_3:
print("张五不在列表中")
else:
print("张五在列表中")
45-列表的切片
python
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_1[2:5]) # [3, 4, 5] 获取指定范围的元素
print(list_1[2:]) # [3, 4, 5, 6, 7, 8, 9]
print(list_1[:5]) # [1, 2, 3, 4, 5]
print(list_1[:]) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_1[-2:]) # [8, 9]
print(list_1[::2]) # [1, 3, 5, 7, 9]
print(list_1[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1] 列表倒序
46-列表中添加元素
python
list_1 = [1, 2, 3, "香妃", "乾隆", "汉武帝", "汉武帝"]
print(list_1)
list_1.append("王安石")
print(list_1)
list_1.extend([1, 2, 3]) # 列表合并(追加多个元素)
print(list_1)
list_1.insert(2, "王安石") # 在指定位置插入元素
print(list_1)
47-列表中删除元素
python
list_1 = ["康熙", "雍正", "乾隆", "嘉庆", "咸丰", "光绪", "咸为"]
print(list_1)
list_1.pop() # 删除最后一个元素
print(list_1)
list_1.pop(3) # 删除指定位置的元素
print(list_1)
list_1.remove("雍正") # 删除指定元素的元素
print(list_1)
list_1.clear() # 清空列表
print(list_1)
48-列表的翻转、排序
python
list_1 = [1, 2, 3, 4, 5, 9, 8, 7, 6]
print(list_1)
list_1.reverse() # 翻转
print(list_1)
list_1.sort() # 排序(升序)
print(list_1)
list_1.sort(reverse=True) # 排序(降序)
print(list_1)
print(sorted(list_1)) # 临时排序(默认升序),不改变原列表,返回排序后的新列表
print(list_1)
print(sorted(list_1, reverse=True)) # 临时排序(降序),不改变原列表,返回排序后的新列表
print(list_1)
list_2 = ["hello", "world", "python", "a", "yes", "no", "now"]
print(list_2)
list_2.sort(key=len) # 按字符串长度排序
print(list_2)
49-多维列表
python
list_1 = [1, 2, 3, 3.14, True, "Hello"] # 一维列表
print(list_1)
print(list_1[3])
list_2 = [1, 2, 3, 3.14, True, "Hello", [1, False, 'hello']] # 二维列表
print(list_2)
print(list_2[6]) # [1, False, 'hello']
print(list_2[6][1]) # 输出:False
print(list_2[6][1:]) # 输出:[False, 'hello']
print(list_2[6][2][2]) # 输出:l
print(list_2[6][2][2:5]) # 输出:llo
list_3 = [1, 2, 3, 4, 5, 6, ['hello', 3.14, [123, 456, 7.89]], 7, 8, 'name'] # 三维列表
print(list_3)
print(list_3[5]) # 6
print(list_3[6]) # ['hello', 3.14, [123, 456, 7.89]]
print(list_3[6][2]) # [123, 456, 7.89]
print(list_3[6][2][2]) # 7.89
50-列表生成式
python
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list_1)
list_2 = list(range(1, 11))
print(list_2)
# 需求:生成[4, 9, 16, 25, 36, 49]
# 第一种方式(原生方式)
list_3 = []
for i in range(2, 8):
list_3.append(i ** 2)
print(list_3) # [4, 9, 16, 25, 36, 49]
# 第二种方式
list_4 = [i ** 2 for i in range(2, 8)] # 列表生成式
print(list_4) # [4, 9, 16, 25, 36, 49]
list_5 = [i for i in range(1, 11, 2)] # 奇数(列表生成式)
print(list_5) # [1, 3, 5, 7, 9]
list_6 = [i for i in range(1, 11) if i % 2 == 1] # 奇数(列表生成式)
print(list_6) # [1, 3, 5, 7, 9]
list_7 = [i for i in range(1, 11) if i % 2 == 1 and i % 3 == 0] # 奇数且被3整除(列表生成式)
print(list_7) # [3, 9]
list_8 = [i + j for i in 'abc' for j in '123'] # 双重循环(列表生成式)
print(list_8) # ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
# 注意:列表生成式一般用于逻辑简单的列表的生成;复杂的建议原生方式!
51-字典
python
"""
列表:适合存储相似的数据,比如多个商品,多个姓名,多个时问
字典:适合行储不同的数据,比如一个商品的个同信息,一个人的个同信息
"""
# 注意:每个字典里面的key都是唯一的,如果出现了多个key的情况,后面的key会覆盖前面的key.
dict_1 = {} # 创建一个空的字典
# 第一种方式创建字典(常用方式,直观)
dict_2 = {"name": "张三", "age": 18, "sex": "男", "address": "北京"} # 创建一个字典
print(dict_2)
# 第二种方式创建字典,dict(key_1=value_1, key_2=value_2);key 键,value 值
dict_3 = dict(color="red", size=20, price=100)
print(dict_3) # {'color': 'red', 'size': 20, 'price': 100}
# 第三种方式创建字典,dict(zip([key_1, key_2......], [value_1, value_2......]))
# 注意:当key的数量和value的数量不一致时,以数量少的为基准
dict_4 = dict(zip(["name", "age", "sex"], ["张三", 18, "男"]))
print(dict_4) # {'name': '张三', 'age': 18, 'sex': '男'}
dict_5 = dict(zip(["name", "age", "sex", "address"], ["张三", 18, "男", "北京", "上海", 100]))
print(dict_5) # {'name': '张三', 'age': 18, 'sex': '男', 'address': '北京'}
# 第四种方式创建字典
dict_6 = dict([("name", "张三"), ("age", 18), ("sex", "男")])
print(dict_6) # {'name': '张三', 'age': 18, 'sex': '男'}
52-字典元素获取
python
dict_1 = {'name': 'zhangsan', 'age': 18, 'gender': 'male'}
print(dict_1)
# 第一种方式获取(不存在的key,会报错)
print(dict_1['name']) # zhangsan
# 第二种方式获取(不存在的key,不会报错,返回None)
print(dict_1.get('name')) # zhangsan
print(len(dict_1)) # 3, 字典长度
print(dict_1.keys()) # 获取字典的key以列表输出,dict_keys(['name', 'age', 'gender'])
print(dict_1.values()) # 获取字典的value以列表输出,dict_values(['zhangsan', 18, 'male'])
print(dict_1.items()) # 获取字典的key和value以列表输出,dict_items([('name', 'zhangsan'), ('age', 18), ('gender', 'male')])
# 遍历字典长度
# 第一种遍历方式(i表示字典key)
for i in dict_1:
print('第一种遍历方式(i表示字典key)', i) #
# 第二种遍历方式(获取key, 下标)
for k, v in enumerate(dict_1):
print('第二种遍历方式(获取key, 下标)', k, '-----', v)
# 第三种遍历方式(获取key,value)(推荐)
for k, v in dict_1.items():
print('第三种遍历方式(获取key,value)', k, '--', v)
# 第四种遍历方式(获取value)
for v in dict_1.values():
print('第四种遍历方式(获取value)', v)
53-字典增加、删除、修改
python
dict_1 = {'name': 'zhangsan', 'age': 18, 'sex': 'male'}
dict_2 = {'height': 171, 'width': 150}
print(dict_1)
print(dict_2)
dict_1.update(dict_2) # 更新字典(合并字典),如果键相同,则覆盖
print(dict_1)
dict_3 = {'name': 'lisi', 'age': 20}
print(dict_3) # {'name': 'lisi', 'age': 20}
dict_3['color'] = 'red' # 添加键值对
print(dict_3) # {'name': 'lisi', 'age': 20, 'color': 'red'}
dict_3['color'] = '土豪金' # 修改键值对
print(dict_3) # {'name': 'lisi', 'age': 20, 'color': '土豪金'}
dict_4 = {'name': '华为', 'size': 8, 'price': 8888, 'color': '土豪金'}
print(dict_4)
# 第一种删除方法
dict_4.pop('color')
print('第一种删除方法', dict_4) # {'name': '华为', 'size': 8, 'price': 8888}
# 第二种删除方法
dict_4.popitem() # 默认删除最后一个键值对
print('第二种删除方法', dict_4) # {'name': '华为', 'size': 8}
# 第三种删除方法
dict_4.clear() # 清空字典
print('第三种删除方法', dict_4) # {}
54-集合
python
# 特点是:不允许有重复的元素,可以进行交集,并集,差集的运算
# 本质是:无序,无重复的集合
set_1 = set() # 创建一个空的集合
print(set_1) # set()
set_2 = {1, 2, 3} # 创建一个集合
set_3 = {'hello', 1, 2, True} # 创建一个集合
55-集合常见操作
python
set_1 = {1, 2, 3, 4, 5, 'jack', 'tom', False}
print(len(set(set_1))) # 获取集合的长度
# print(set_1[0]) # 集合不支持索引
set_2 = {2, 3, 4, 5, 6}
print(set_2)
set_2.add(7) # 添加元素
print(set_2) # {2, 3, 4, 5, 6, 7}
set_2.update([1, 8]) # 添加多个元素,以列表形式添加
print(set_2) # {2, 3, 4, 5, 6, 7, 1, 8}
set_2.pop() # 删除一个元素,随机删除
print(set_2) #
set_2.remove(2) # 删除指定元素,如果元素不存在,则报错
print(set_2)
set_2.discard(3) # 删除指定元素,如果元素不存在,则不报错
print(set_2)
set_2.clear() # 清空集合
print(set_2) # set()
# 遍历集合
set_3 = {1, 2, 3, 4, 5}
for item in set_3:
print(item)
set_4 = {1, 2, 3, 4, 5}
set_5 = {3, 4, 5, 6, 7}
print(set_4 & set_5) # & 取交集,{3, 4, 5}
print(set_4 | set_5) # | 取并集,{1, 2, 3, 4, 5, 6, 7}
print(set_4 - set_5) # - 取差集,{1, 2}
print(set_4 ^ set_5) # ^ 取对称差集,{1, 2, 6, 7}
print(set_4 <= set_5) # <= 判断是否为子集
print(set_4 >= set_5) # >= 判断是否为超集
print(set_4 < set_5) # < 判断是否为子集,set_4是否包含set_5
print(set_4 > set_5) # > 判断是否为超集,set_5是否包含set_4
56-元组
python
# 元组一般用来存储多个数据,使用()
tuple_1 = () # 空元组
print(tuple_1) # ()
# 元组中只有一个元素,一般要在元素的后面加,若不加,该数据类型不一定是元组,取决于元素的数据类型
tuple_2 = (1)
print(type(tuple_2)) # <class 'int'>
tuple_3 = ('a')
print(type(tuple_3)) # <class 'str'>
tuple_4 = (1,)
print(type(tuple_4)) # <class 'tuple'>
# 元组中的元素可以是不同的数据类型
tuple_5 = ('a', 1, 1.1, True)
print(tuple_5) # ('a', 1, 1.1, True)
print(type(tuple_5)) # <class 'tuple'>
# 元组元素的访问,通过下标访问
print(tuple_5[0]) # a
print(tuple_5[-1]) # True
# 元组元素是不可修改的,不能修改元组中的元素
tuple_5[0] = 'b' # TypeError: 'tuple' object does not support item assignment
# 删除元组
del tuple_5 # 删除元组
57-元组的合并、重复、判断
python
tuple_1 = (1, 3.14, 'hello', True)
tuple_2 = (6, 7.89, 'world', False)
print(tuple_1) # (1, 3.14, 'hello', True)
print(tuple_2) # (6, 7.89, 'world', False)
# 元组的合并
print(tuple_1 + tuple_2) # (1, 3.14, 'hello', True, 6, 7.89, 'world', False)
# 重复元组中的元索
print(tuple_1 * 3) # (1, 3.14, 'hello', True, 1, 3.14, 'hello', True, 1, 3.14, 'hello', True)
print(tuple_2 * 2) # (6, 7.89, 'world', False, 6, 7.89, 'world', False)
# 判断元组中是否包含某个元素
print(1 in tuple_1) # True
print(2 in tuple_1) # False
print('hello' not in tuple_1) # False
print('world' not in tuple_1) # True
58-元组的切片
python
tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费')
print(tuple_1[0:4]) # (1, 2, 3.14, 'hello')
print(tuple_1[4:]) # (True, 'world', '水电费')
print(tuple_1[:4]) # (1, 2, 3.14, 'hello')
print(tuple_1[::2]) # (1, 3.14, True, '水电费')
print(tuple_1[::-1]) # ('水电费', 'world', 'hello', 3.14, 2, 1)
print(tuple_1[-1::-1]) # ('水电费', 'world', 'hello', 3.14, 2, 1)
59-元组常见操作
python
tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费')
print(len(tuple_1)) # 获取元组长度
tuple_2 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(max(tuple_2)) # 获取最大值
print(min(tuple_2)) # 获取最小值
tuple_3 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(sum(tuple_3)) # 获取总和
# 将其他数据类型转换为元组
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'hello', True]
tuple_4 = tuple(list_1) # 将列表转换为元组
print(tuple_4) # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'hello', True)
str_1 = 'hello world'
tuple_5 = tuple(str_1) # 将字符串转换为元组
print(tuple_5) # ('h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd')
# 元组遍历
for i in tuple_1:
print(i)
for j in range(len(tuple_1)):
print(j, tuple_1[j])
for k, v in enumerate(tuple_1):
print(k, v)
60-多维元组
python
tuple_1 = (1, 2, 3.14, 'hello', True, 'world', '水电费') # 一维元组
tuple_2 = (1, 2, 3.14, 'hello', ('阿萨德', True, '森岛帆高'), 'world', '水电费') # 二维元组
print(tuple_2[4][1]) # True
tuple_3 = (1, 2, 3.14, 'hello', ('阿萨德', True, ('get', False), '森岛帆高'), 'world', '水电费') # 三维元组
print(tuple_3[4][2][0]) # get