# 内置函数:
# print(),len()
# 重点掌握
# 增:append(),insert(),extend()
# 列表的函数/功能
# 增删改查
# 增:插入元素
# append(n):在列表末尾插入元素
nums = [2, 3, 4]
nums.append(5)
print(nums) # [2, 3, 4, 5]
# insert(i,n):在列表指定下标位置插入元素
nums = [2, 3, 4]
# nums.insert(0, 5)
nums.insert(2, 5)
print(nums) # [5, 2, 3, 4]
# extend() 依次添加多个元素到末尾
nums = [2, 3, 4]
nums.extend([5, 6, 7]) # [2, 3, 4, 5, 6, 7]
# nums.append([5, 6, 7]) # 当成一个元素加入
print(nums)
# 删
# pop(i):根据下标删对应的元素
stars = ['宝强', '乃亮', '伊俐', '羽凡', '霆锋']
n = stars.pop(1) # ['宝强', '伊俐', '羽凡', '霆锋']
print(stars)
print(n)
# remove(n):删除指定的第一个元素
nums = [1, 2, 2, 2, 2, 3, 3, 4]
nums.remove(2) # [1, 2, 2, 2, 3, 3, 4]
print(nums)
# 统计指定元素出现的次数
print(nums.count(2))
for _ in range(nums.count(2)):
nums.remove(2)
print(nums)
#
nums = [1, 2, 3, 4, 5, 6, 7]
# nums2=nums
# del nums
# print(nums2)
del nums[2:5]
print(nums) # [1, 2, 6, 7]
# clear(): 清空列表
nums = [1, 2, 3, 4, 5, 6, 7]
nums.clear()
print(nums) # []
# 改
nums = [1, 2, 3, 4, 5, 6, 7]
nums[0] = 99
print(nums)
# 查
print(nums[0])
# 循环遍历查询
# index(): 找到列表中第一次出现指定元素的下标
nums = [1, 2, 3, 4, 5, 6, 7]
print(nums.index(4))
# 数学功能
ages = [1, 3, 4, -6, 5, 88, 2]
print(max(ages)) # 最大值
print(min(ages)) # 最小值
print(sum(ages)) # 求和
# 排序
# sort() :升序(从小到大),会改变原列表
# sort(reverse=True) :降序(从大到小),会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
# ages.sort() # 升序
ages.sort(reverse=True) # 降序
print(ages)
# sorted() : 升序(从小到大),不会改变原列表
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()
print(ages)
# reversed() :倒序,不会改变原列表
ages = [1, 3, 4, -6, 5, 88, 2]
age2 = reversed(ages)
print(ages, list(ages2))
# 拷贝
# 数据类型
# 基本类型/不可变类型:int,float,bool,str,tuple
# 引用类型/可变类型:list,dict,set
# 赋值类型
# 不可变类型的赋值
a = 100
b = a
a = 99
print(a, b) # 99 100
# 可变类型的赋值,有关联
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[-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]]