Python序列:集合,字典!和其他序列的操作以及有关序列的函数的使用,函数的传参方式以及lambda函数!
# Python--序列-对-list进行切片
my_list = [0, 1, 2, 3, 4, 5, 6]
result = my_list[1:4]
print(f"结果:{result}")
# 对tuple进行切片
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result = my_tuple[::2]
print(f"结果:{result}")
# 对字符串切片
my_str = "0123456"
result = my_str[::2]
print(f"结果:{result}")
# 字符串反转
my_str = "012345678"
result = my_str[::-1]
print(f"结果:{result}")
# 对列表切片反向
my_list = [0, 1, 2, 3, 4, 5, 6]
result = my_list[3:1:-1]
print(f"结果:{result}")
# 序列[起始下标:结束下标:步长]不包含结束下标;切片是得到了一个新序列原来序列不变
# 切片实例
my_str = "uoy evolp i"
# num1取出love
result = my_str[::-1][3:7]
print(f"{result}")
# num2
result = my_str[4:8][::-1]
print(f"{result}")
# num3
result = my_str.split(" ")[1][::-1][1:]
print(f"{result}")
# 集合--set无序不重复“”‘可修改’“”
my_set = {"i", "love", "you", "my", "baby", "i", "love", "you", "my", "baby"}
# 集合可以是空
my_set_empty = set()
print(f"{my_set} {type(my_set)}") # 无序输出且不重复
print(f"{my_set_empty} {type(my_set_empty)}")
# 集合添加元素--add
my_set.add("best")
print(f"添加:{my_set}")
# 不可以添加重复元素
my_set.add("love") # 无法添加love
print(f"重复添加:{my_set}")
# 移除元素--remove
my_set_num1 = my_set.remove("best")
print(f"移除:{type(my_set_num1)} {my_set}") # 注意是原来的集合改变了,不要赋给新集和
# 随机抽取一元素--pop
elem_set = my_set.pop()
print(f"取出后:{my_set}")
print(f"取出的元素:{elem_set}")
# 清空集合--clear
my_set.clear()
print(f"清空后:{my_set}")
# 取出两个集合的差集,原来两集合不变,得到一个新集和
set1 = {1, 2, 3, 4, 5, 6, 7, 8}
set2 = {5, 4, 6, 2, 8}
set3 = set1.difference(set2) # 取得是在集合1中除了集合2中元素的其它元素
print(f"{set3}")
print(f"{set1}")
print(f"{set2}")
# 消除两个集合的差集,前面的集合改变后面的集合不变
set1 = {1, 2, 3, 4, 5}
set2 = {5, 4, 2, 1}
set1.difference_update(set2)
print(f"{set1}") # 消除了集合1中的’集合2里的元素‘
print(f"{set2}") # 集合二不变
# 让两个集合合并--union
set1 = {1, 2, 3, 4, 5, 6}
set2 = {6, 7, 8, 9}
set3 = set1.union(set2) # 去重合并
print(f"1:{set1}\n2:{set2}\n3:{set3}")
# 统计集合元素数量--len,去重后的集合
set1 = {1, 1, 2, 3, 4, 4}
num = len(set1)
print(f"{num}") # 4个
# 集合的遍历‘集合无序so不能用while循环’可以用for循环‘
set1 = {1, 2, 3, 4, 4, 5}
for elem in set1:
print(f"集合中:{elem}")
# 字典
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
# 建立空字典的两种方法
my_dict2 = {}
my_dict3 = dict()
print(f"{my_dict1}")
print(f"{my_dict2}, {type(my_dict2)}")
print(f"{my_dict3}, {type(my_dict3)}")
# 字典元素重复
# my_dict1 = {"tom": 88, "jack": 89, "lucy": 97, "tom": 87} # 直接报错
# 从字典中基于key找到value
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
score = my_dict1["tom"]
print(f"{score}")
# 定义嵌套字典
stu_score_dict = {
"tom": {
"语文": 88,
"math": 89,
"english": 85
},
"jack": {
"chinese": 85,
"math": 96,
"english": 78
},
"lucy": {
"chinese": 89,
"math": 98,
"english": 99
}
}
print(f"{stu_score_dict}")
score1 = stu_score_dict["tom"]["math"]
print(f"tom's math::{score1}")
# 字典的常用操作
# 新增元素--字典[Key]=Value
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
my_dict1["mystical"] = 65
print(f"{my_dict1}")
# 字典更新相当于key一样进行覆盖value
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
my_dict1["tom"] = 65
print(f"{my_dict1}")
# 字典删除元素--pop
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
value = my_dict1.pop("tom")
print(f"删除的值:{value},字典中:{my_dict1}")
# 清空字典--clear
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
my_dict1.clear()
print(my_dict1)
# 获取全部的key
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
keys = my_dict1.keys()
print(type(keys), "全部人名:", keys)
# 遍历字典
for key in my_dict1: # 先遍历出key再用key进行查询value,或者使用for key in keys:有同样效果
print(key, " :", end='')
print(my_dict1[key])
print(my_dict1)
# 统计字典中元素数量--len
my_dict1 = {"tom": 88, "jack": 89, "lucy": 97}
sum1 = len(my_dict1)
print("字典中元素数目:", sum1)
# 字符串的比较一位一位的比较,出现其中一位大后面那的不再进行比较
print('abcd' > 'acaa') # False
# max函数使用
my_list = [1, 2, 3, 4, 5, 6]
my_tuple = (1, 2, 3, 4, 5, 6, 7)
my_str = "abcdefgh"
my_set = {1, 2, 3, 4, 5, 6}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4}
print(max(my_list))
print(max(my_str))
print(max(my_set))
print(max(my_tuple))
print(max(my_dict)) # 判断的是key一次逐个判断
# min
print(min(my_list))
print(min(my_str))
print(min(my_set))
print(min(my_tuple))
print(min(my_dict))
# sorted排序,排序后时列表的形式
my_list = [1, 5, 6, 7, 9, 3]
print(sorted(my_list)) # 正序排序输出
print(sorted(my_list, reverse=True)) # 逆序输出
# list(),tuple(),str(),set()转换,没有其他转换成字典
# 当字典转换成其他容器时,除了字符串类型,其他的丢失value
print(str(my_dict))
print(list(my_dict)) # 丢失value
# 字典的基本使用
work_dict = {
"tom": {
"部门": "科技部",
"工资": 3000,
"级别": 1
},
"jay": {
"部门": "市场部",
"工资": 2000,
"级别": 2
},
"jack": {
"部门": "市场部",
"工资": 5000,
"级别": 3
},
"lucy": {
"部门": "科技部",
"工资": 8000,
"级别": 1
},
"macaw": {
"部门": "市场部",
"工资": 7000,
"级别": 1
}
}
print(work_dict)
for name in work_dict:
if work_dict[name]["级别"] == 1:
work_dict[name]["级别"] = 2
work_dict[name]["工资"] += 1000
print(work_dict)
# 函数有多个返回值
def test_return():
return 1, "love", True
x, y, z = test_return() # 注意书写形式要对应
print(x)
print(y)
print(z)
# 函数的多种传参方式
# 位置参数
def user_info(name, age, gender):
print(f"您的名字:{name}, 年龄是{age}, 性别:{gender}")
user_info1('tom', 20, '男')
# 传递的参数和定义的参数个数和顺序必须一致
# 关键字参数--函数调用时通过’键=值‘形式传递参数
def user_info1(name, age, gender):
print(f"您的名字{name},年龄{age},性别{gender}")
# 关键字传入参数也可以不按照循序
user_info1(name="tom", age=20, gender="男")
# 可以和位置参数混合使用,位置参数必须在前且匹配参数循序,关键字参数不用循序
user_info1("tom", age=20, gender="男")
# 缺省参数
def user_info1(name, age, gender="男"): # 默认值,没有传入参数时起作用
print(f"您的名字{name},年龄{age},性别{gender}")
user_info1(name="tom", age=20)
user_info1(name="tom", age=20, gender="女")
# 不定长参数--位置不定长
def user_info1(*args):
print(f"{type(args)} 内容:{args}") # 元组形式储存
user_info1(1, 2, 3, "tom", True)
# 关键字不定长
def user_info1(**kwargs):
print(f"{type(kwargs)}, 内容:{kwargs}")
user_info1(name="tom", age=20, gender="男") # 要以键值的形式储存最终是以字典形式呈现
# 函数作为参数传入--传入的是计算逻辑而不是数据
def func_func(func_in1):
result1 = func_in1(8, int(input("输入第二个数:")))
print(f"形式:{type(func_in1)}, {result1}")
def func_in(a, b):
return a + b
func_func(func_in) # 内部的函数做为参数传入外函数,传入的是计算逻辑
# lambda匿名函数
# lambda 传入参数 : (一行代码)
def test_func(compute):
result2 = compute(1, 9)
print(f"{result2}")
test_func(lambda x1, y1: x1 + y1) # 函数只能使用用一次且只能写一行代码
学习贵在坚持!一起加油!