Day_05_AM_ built-in_functions_2
# 数学功能
ages = [1, 3, 4, -6, 5, 88, 2]
print(max(ages)) # Maximum,不是数字一般不用它
print(min(ages)) # Minimum
print(sum(ages)) # 97, 求和
# 排序
# sort(): 升序(从小到大),一般是对数字进行排序,会改变原列表
# sort(reverse=True): 降序(从大到小),会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
# ages.sort()
ages.sort(reverse=True) # [88, 5, 4, 3, 2, 1, -6]
print(ages) # [-6, 1, 2, 3, 4, 5, 88]
# sorted(): 升序(从小到大),不会改变原列表
# sorted(reverse=True): 降序(从大到小),不会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
# ages2 = sorted(ages)
ages2 = sorted(ages, reverse=True)
print(ages, ages2)
# 倒序/逆转/逆序/反转
ages = [1, 3, 4, -6, 5, 88, 2]
# print(ages[::-1])
# reverse(): 倒序,会改变原列表
ages.reverse() # [2, 88, 5, -6, 4, 3, 1]
print(ages)
# reversed(): 倒序,不会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages2 = reversed(ages)
print(ages, ages2)
# 拷贝
# 数据类型
# 分两类:
# 基本类型/不可变类型: int, float, bool, str, tuple
# 引用类型/可变类型
# 为什么分两组
# 赋值问题
# 不可变类型的赋值(整数浮点数布尔类型)
a = 100
b = a
# print(a is b) # True, 地址一样的
b = 99
print(a, b) # 100 99
# 可变累类型的赋值, 有关联
nums1 = [1, 2, 3]
nums2 = nums1 # 两个列表同样的值
nums1[1] = 99
print(nums1, nums2)
# [1, 99, 3] [1, 99, 3]
# 拷贝/复制
# 浅拷贝/浅复制
nums1 = [1, 2, 3] # 需要保留原列表拷贝,不需要保留原列表直接操作
nums2 = nums1.copy()
nums1[1] = 99
print(nums1, nums2)
# [1, 99, 3] [1, 2, 3]
# 深拷贝/深复制
nums3 = [1, 2, 3, [4, 5, 6]] # 二维列表
nums4 = nums3.copy() # 浅拷贝,改变一个另一个不会变, 只能拷贝第一层
# nums3[1] = 99
# print(nums3, nums4)
# [1, 99, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]] 改nums3,nums4没变
nums3[-1][1] = 100
print(nums3, nums4)
# [1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 100, 6]] 现在变得一样了,因为浅拷贝只能拷贝第一层,不能拷贝里面的列表
import copy
nums3 = [1, 2, 3, [4, 5, 6]]
nums4 = copy.deepcopy(nums3)
nums3[-1][1] = 100
print(nums3, nums4)
# [1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 5, 6]]