一、列表(list)
列表的定义
Python中的列表(List)是一种有序、可变的序列类型,可以使用方括号来表示一个列表,其中各个元素之间使用逗号分隔。列表中的每个元素可以是不同类型的数据,如整数、字符串、浮点数等。
#下面的代码定义了一个包含多个元素的列表
my_list = [1, 2, 'hello', 3.5, [4, 5]]
使用列表的注意事项
使用列表时,有以下几个注意事项:
空列表:空列表可以使用 [] 或 list()。如果列表中没有元素,则使用 len() 函数会返回 0。
列表元素访问:使用索引进行列表元素访问,从 0 开始计数。可以通过 my_list[index] 的方式来访问或更改列表中的元素值,其中 index 是对应元素的位置。
列表的常用操作
创建列表
#创建列表
my_list = [1, 2, 3.5, '牡丹', [4, 5]]
添加元素
使用append()方法向列表末尾添加一个元素
my_list = [1, 3.5, '牡丹', [4, 5]]
# 使用append()方法向列表末尾添加一个元素
my_list.append(["樱花"])
print(my_list) #输出结果:[1, 3.5, '牡丹', [4, 5], ['樱花']]
使用insert()方法在指定位置插入一个元素。
方法:insert(索引号,[值])
my_list = [1, 3.5, '牡丹', [4, 5]]
#使用insert()方法在指定位置插入一个元素。
my_list.insert(1,["芍药"])
print(my_list) #输出结果:[1, ['芍药'], 3.5, '牡丹', [4, 5]]
使用extend()方法将一个可迭代对象中的元素添加到列表末尾。
my_list = [1, 3.5, '牡丹', [4, 5]]
#使用extend()方法将一个可迭代对象中的元素添加到列表末尾。
my_list.extend(["桃花"])
print(my_list) #输出结果:[1, 3.5, '牡丹', [4, 5], '桃花']
访问元素
通过下标(index):使用索引值,即元素在序列中的位置,从0开始编号。可以使用正数或负数访问元素,其中正数从左到右访问,负数从右到左访问。
#通过下标(index)
my_list = [1, 3.5, '牡丹', [4, 5]]
print(my_list[1]) # 输出结果:3.5
print(my_list[-1]) # 输出结果:[4, 5]
通过切片(slice):使用切片访问多个元素,指定一个区间(左闭右开)来获取序列的一部分。
#通过切片(slice)
my_list = [1, 3.5, '牡丹', [4, 5]]
print(my_list[1:3]) # 输出结果:[3.5, '牡丹']
print(my_list[1:4:1]) # 输出结果:[3.5, '牡丹', [4, 5]]
print(my_list[:3]) # 输出结果:[1, 3.5, '牡丹']
print(my_list[2:]) # 输出结果:['牡丹', [4, 5]]
修改元素
通过下标(index):使用索引值,即元素在序列中的位置,从0开始编号,直接重新赋值为新值即可。
my_list = [1, 3.5, '牡丹', [4, 5]]
#通过下标(index)
my_list[1]="芍药"
print(my_list) #输出结果:[1, '芍药', '牡丹', [4, 5]]
通过切片(slice):使用切片访问多个元素并进行修改,指定一个区间(左闭右开)来获取序列的一部分,并将新内容通过切片重新赋值给该区间。
my_list = [1, 3.5, '牡丹', [4, 5]]
#通过切片(slice
my_list[1:3]=["芍药","樱花"]
print(my_list) #输出结果:[1, '芍药', '樱花', [4, 5]]
删除元素
使用del语句删除指定位置的元素
#del
my_list = [1, 3.5, '牡丹', [4, 5]]
del my_list[1]
print(my_list) #输出结果:[1, '牡丹', [4, 5]]
使用pop()方法弹出并返回指定位置的元素(默认弹出最后一个元素),也可以不返回弹出的元素
#pop()
my_list = [1, 3.5, '牡丹', [4, 5]]
my_list.pop(0)
print(my_list) #输出结果:[3.5, '牡丹', [4, 5]]
使用remove()方法删除指定值的元素:
前提:不知道列表中要删除中的值所处的位置(索引号),只知道要删除的元素的值。
注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中多次出现,就需要使用循环来判断是否删除了所有这样的值。
# #remove()
my_list = [1, 3.5, '牡丹', [4, 5]]
my_list.remove("牡丹")
print(my_list) #输出结果:[1, 3.5, [4, 5]]
删除列表中的重复元素
#元素去重
my_list = [1,1, 2, 2,3, 2, 4, 3]
# 使用set()函数去重,并将去重后的集合转换为列表格式
list_1 = list(set(my_list))
print(list_1) # 输出结果:[1, 2, 3, 4]
删除列表中的所有元素(清空列表)
my_list = [1, 2, 3, 4, 5]
# 删除所有元素
my_list.clear()
print(my_list) #输出结果:[]
列表的长度
使用函数 len() 来获取列表的长度。
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print(length) # 输出 5
列表的求和
使用函数 sum() 来求列表中元素的和。
my_list = [1, 2, 3, 4, 5]
total = sum(my_list)
print(total) # 输出 15
列表的排序
用 sorted() 函数排序,返回新列表
sorted() 函数会返回一个新列表,并将原列表保持不变。它可以接受一个可迭代对象作为参数,并返回一个新的、已经排序好的列表。sorted() 函数可以通过 reverse 参数来控制升序或降序排列。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# 升序排序
new_list = sorted(my_list)
print(new_list) # 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
# 降序排序
new_list = sorted(my_list, reverse=True)
print(new_list) # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
用 sort() 方法排序,原列表改变
sort() 方法是在原列表上进行排序,因此不需要返回一个新列表。sort() 方法也可以通过 reverse 参数来控制升序或降序排列。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# 升序排序
my_list.sort()
print(my_list) # 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
# 降序排序
my_list.sort(reverse=True)
print(my_list) # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
判断元素是否存在列表中
可以使用 in 关键字或者 not in 关键字来判断元素是否存在于列表中。
# 判断一个元素是否存在于列表中
my_list = [1, 2, 3, 4, 5]
if 3 in my_list:
print("3 存在于列表 my_list 中")
else:
print("3 不存在于列表 my_list 中") #输出结果:3 存在于列表 my_list 中
#判断一个元素是否不存在于列表中
my_list = [1, 2, 3, 4, 5]
if 6 not in my_list:
print("6 不存在于列表 my_list 中")
else:
复制列表
使用切片操作符 [:] 来复制整个列表
# 使用切片操作符
a = [1, 2, 3]
b = a[:]
print(b) #输出结果:[1, 2, 3]
通过 list() 函数将原始列表作为参数来创建一个新的列表
# 使用 list() 函数
a = [1, 2, 3]
c = list(a)
print(c) #输出结果:[1, 2, 3]
使用列表的 copy() 方法来复制一个列表
# 使用 copy() 方法
a = [1, 2, 3]
d = a.copy()
print(d) #输出结果:[1, 2, 3]
遍历列表的值
# 遍历切片
list=['a','b','c','d','e','f','g']
for list_1 in list[:3]: #结束索引不包含
print(list_1)
输出结果:
a
b
c
二、元组
元组的定义
元组用于表示一个不可变的有序序列,其元素可以是任意类型的数据,包括数字、字符串、列表、元组等。元组与列表类似,不同之处在于元组的元素不能修改,因此元组是不可变的。元组可以使用小括号 () 来表示,也可以直接将多个值用逗号 , 隔开,Python 会自动将其封装成元组。
#使用小括号表示元组
a=(1,2,3,4)
print(type(a)) #输出结果:<class 'tuple'>
# 直接用逗号隔开多个值表示元组
b=1,2,3
print(type(b)) #输出结果:<class 'tuple'>
使用元组的注意事项
空元组的表示方式:如果需要定义一个空元组,可以使用 () 或 tuple() 语句来实现。
定义单个元素的元组:当元组中只有一个元素时,需要在元素后面加上逗号 ,,否则 Python 将会把这个元素视为其他类型数据的值。
元组的常用操作
创建元组
# 创建元组:使用小括号 () 或者直接用逗号 , 把多个值拼接成元组。
tup1 = (1,2,3)
tup11 = 'a', 'b', 'c'
print(tup1) #输出结果:(1, 2, 3)
print(tup11) #输出结果:(1, 2, 3)
访问元组中的元素
# 访问元组中的元素:通过下标索引访问元组中的元素,下标从 0 开始。
tup2 = ('a', 'b', 'c')
print(tup2[0]) #输出结果: 'a'
元组的切片
# 元组的切片操作:可以通过下标对元组进行切片,获取指定区间内的元素。
tup3= ('a', 'b', 'c', 'd', 'e')
print(tup3[1:4]) #输出结果:('b', 'c', 'd')
元组的索引
元组的索引从 0 开始,依次递增。使用下标索引的方式来获取元组中指定位置的值
tup = ('a', 'b', 'c')
print(tup[0]) # 输出 'a'
元组的长度
# 计算元组长度:使用 len() 函数计算元组中元素的个数。
tup = (1, 2, 3, 4, 5)
print(len(tup)) #输出结果:5
在元组中查找元素
# 在元组中查找元素:使用 in 操作符检查元素是否存在于元组中。
tup = ('a', 'b', 'c')
if 'a' in tup:
print('存在')
else:
print('不存在') #输出结果:存在
遍历元组中的所有值
像列表一样,也可以使用for循环来遍历元组中的所有值。
tup = (1, 2, 3, 4, 5)
for item in tup:
print(item)
输出结果:
1
2
3
4
5
三、列表转成元组
#列表转成元组
a=[1,2,3,4]
b=tuple(a)
print(type(b)) #输出结果:<class 'tuple'>
四、列表和元组的异同
相同:都是序列(Sequence)类型,用于存储一系列有序的数据
区别:
可变性:列表是可变(Mutable)的,可以直接对其进行修改,例如添加、删除、修改元素等操作。而元组是不可变(Immutable)的,一旦创建就不能再修改其中的元素。因此,如果需要对其中的元素进行修改,一般需要将元组转换成列表,执行完操作后再转换回来。
语法:在语法上,列表使用方括号 [] 来创建和访问,而元组则使用小括号 ()。