python列表的基本操作与功能
程序员文章站
2024-01-06 11:39:16
...
列表的基本操作与功能
一.基本操作
1. 创建列表
一个列表需要用中括号[ ]
把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。
ages = [1,2,3,4,5,6]
age2 = ['1', '2', '3', '4','adf',[1,23,4]]
# 列表内的元素可以是不同类型
ages3 = [x for x in range(1,6)] # 列表生成式 [1,2,3,4,5,6]
ages4 = [i*i for i in range(1,4)] #[1,4,9]
2.列表的下标
列表的顺序一般是从左往右,下标从0开始计数,倒序从-1开始
ages = [1,2,3,4,5,6]
print(ages[0]) # 1
print(ages[1]) # 2
print(ages[5]) # 6
# print(ages[6]) # Indexerror: list index out of range
print(ages[-1]) # 6 # 倒数第一个
print(ages[-2]) # 5 # 倒数第二个
3.列表的长度
长度一般都用len()函数进行计算
ages = [1,2,3,4,5,6]
print(len(ages)) # 6
4.遍历列表
遍历列表一般使用for 循环
ages = [11,22,33,44,55]
for n in ages:
print(n) # 逐个打印输出元素
for i in range(len(ages)):
print(i) # 得到每个元素的下标
for i in range(len(ages)):
print(i, ages[i]) # 输出元素下标,以及对应元素
# enemerate(): 枚举/列举
for i,n in enumerate(ages):
print(i, n) # 得到下标以及元素
for i in range(4,-1,-1):
print(i,ages[i]) # 从后往前遍历
5.切片
切片,截取 [start:stop:step] => 范围[start,stop)
ages = [1,2,3,4,5,6,7,8,9]
print(ages[:]) # 取所有 [1,2,3,4,5,6,7,8,9]
print(ages[3:]) # [4, 5, 6, 7, 8, 9]
print(ages[:4]) #[1, 2, 3, 4]
print(ages[4:7]) #[5, 6, 7]
print(ages[::-1]) # 倒序 [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(ages[::2]) # 隔2 [1, 3, 5, 7, 9]
print(ages[4:1:-1]) # [5, 4, 3]
6. 重复
print([1,2,3]*3) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
7. 判断列表成员
ages = [1,2,3,4,5,6,7,8,9]
print(4 in ages) # True
print(4 not in ages) # False
8.合并列表
print([1,2,3] + [4,5,6]) # [1, 2, 3, 4, 5, 6]
9.删除列表
ages = [1,2,3,4,5,6,7,8,9]
del ages #
print(ages) # ages = []
二. 列表的功能
1.增加
append(n):在列表的末尾插入一个元素
insert(i, n) :在列表的指定下标位置插入元素
extend() :将另一个列表中的每一个元素都添加到列表的末尾
# append() 在列表的末尾插入一个元素
nums = [2,3,4]
nums.append(5)
print(nums) # [2, 3, 4, 5]
# insert(i, n) :在列表的指定下标位置插入元素
nums = [2,3,4]
nums.insert(0, 3)
print(nums) # [3,2,3,4]
# extend() :将另一个列表中的每一个元素都添加到列表的末尾
nums = [2, 3, 4]
nums.extend([5,6,7]) #[2, 3, 4, 5, 6, 7]
print(nums)
2.删除元素
# pop(i): 删除对应下标元素
list1 = [2, 3, 4, 5, 6, 7]
list1.pop() # [2, 3, 4, 5, 6] 不写参数默认删除最后一个
list1.pop(2) # [2, 3, 5, 6] # 在新列表上删除下标为2的元素
s = list1.pop(2) # pop()有返回值,返回的是删除的那个元素
# remove(n): 删除指定的第一个元素
nums = [1,2,2,2,2,3,3,4]
nums.remove(2) # [1, 2, 2, 2, 3, 3, 4]
print(nums)
# 统计指定元素在列表中的出现次数,删除重复元素
nums = [1,2,2,2,2,3,3,4]
for _ in range(nums.count(2)): # 计算2出现的次数
nums.remove(2) # 删除元素2
print(nums)
# index() :找到列表中第一次出现指定元素的下标,如果不存现在则报错
l = [1,2,3,2,2,4,5]
# del : 删除不彻底,不能从内存里删除
nums = [1,2,3,4,5,6,7]
# nums2 = nums
# del nums
# print(nums2)
del nums[2:5]
print(nums)
# clear():清空列表
nums = [1,2,3,4,5,6,7]
nums.clear()
print(nums) # []
3.数学功能操作
ages = [1, 3, 4, -6, 5, 88, 2]
print(max(ages)) # 最大数 88
print(min(ages)) # 最小数 -6
print(sum(ages)) # 求和 97
4.排序
sort(): 升序,从小到大进行排序,会改变源列表
sort(reverse=True): 降序,会改变源列表
#sort(): 升序,从小到大进行排序,会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages.sort() # 升序排列
print(ages) # [-6, 1, 2, 3, 4, 5, 88]
#sort(reverse=True): 降序,会改变源列表
ages3 = [1, 3, 4, -6, 5, 88, 2]
ages3.sort(reverse=True) # 理解为先升序排列然后倒序
print(ages3) # [88,5,4,3,2,1,-6]
# sorted():升序,不会改变源列表 非列表函数
ages3 = [1, 3, 4, -6, 5, 88, 2]
ages4 = sorted(ages3) # [-6, 1, 2, 3, 4, 5, 88]
print(ages4)
倒序 reverse() 会改变源列表
reversed() 不会改变源列表
# 倒序 reverse() 会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
# print(ages[::-1])
ages.reverse()
print(ages)
# reversed() 不会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages3 = reversed(ages)
print(ages, list(ages3))
5.可变数据
列表属于可变类型数据,其赋值是有关联的
nums1 = [1,2,3]
nums2 = nums1
nums1[1] = 99
print(nums1, nums2) # [1, 99, 3] [1, 99, 3]
6.拷贝
# 拷贝
# 浅拷贝,复制
nums1 = [1,2,3]
nums2 = nums1.copy()
nums1[1] = 99
print(nums1, nums2) # [1, 99, 3] [1, 2, 3]
nums1 = [1,2,3,[123,6,7]]
nums2 = nums1.copy()
nums1[-1][1] = 66
print(nums1, nums2) #[1, 2, 3, [123, 66, 7]] [1, 2, 3, [123, 66, 7]]
# 深拷贝/深复制
import copy
nums3 = [1,2,3,[4,5,6]]
nums4 = copy.deepcopy(nums3) # 深拷贝,拷贝所有层
nums3[-1][1] = 100 #[1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 5, 6]]
print(nums3, nums4)