列表的相关操作
列表中存放的数据是可以进行修改的,比如"增"、"删"、"改"、"查"
<1>添加元素("增"append, extend, insert)
append
通过append可以向列表添加元素
demo:
#定义变量A,默认有3个元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("-----添加之前,列表A的数据-----") for tempName in A: print(tempName) #提示、并添加元素 temp = input('请输入要添加的学生姓名:') A.append(temp) print("-----添加之后,列表A的数据-----") for tempName in A: print(tempName)
结果:
extend
通过extend可以将另一个集合中的元素逐一添加到列表中
>>> a = [1, 2] >>> b = [3, 4] >>> a.append(b) >>> a [1, 2, [3, 4]] >>> a.extend(b) >>> a [1, 2, [3, 4], 3, 4]
insert
insert(index, object) 在指定位置index前插入元素object
>>> a = [0, 1, 2] >>> a.insert(1, 3) >>> a [0, 3, 1, 2]
例子1:
# o -> object -> 对象 (万物皆对象) # 列表是一个可变的数据类型 # 如果在操作增 删 改 操作的时候是直接改变其本身 # 增 # 添加元素(append, extend, insert) # append (追加元素) # 定义一个列表 my_list = [3, 2] # # 追加元素 my_list.append(1) print(my_list)
结果:
[3, 2, 1]
例子2:
# extend # 只能添加的是可迭代对象 # 会把可迭代对象的进行最小单元拆分 逐一的保存到列表中 # 定义一个列表 my_list = [3, 2] my_list.extend([4, 5, 6]) print(my_list)
结果:
[3, 2, 4, 5, 6]
例子3(假如没有extend):
my_list = [3, 2, 1] # 假如没有了extend for value in [4, 5, 6]: my_list.append(value) print(my_list)
运行结果:
[3, 2, 1, 4, 5, 6]
例子4:
# insert # 定义一个列表 my_list = [3, 2, 1] # 插入数据 my_list.insert(-5, "双击666") print(my_list)
运行结果:
['双击666', 3, 2, 1]
重要点:
append
extend
insert
# 作为一个整体保存的
append
insert
# 只能保存可迭代对象
extend
# 保存的数据在其列表的尾部
append
extend
# 保存的数据在其列表任意位置
insert
练习
demo1
# 从键盘中输入5个学生的名字,存储到列表中,然后打印出每个学生名字中的第2个字符 # # 定义一个列表 student_list = list() # # # 如果for循环中的临时变量名不用 可以使用_进行占位 for _ in range(5): name = input("请输入一个学生的名字:") # # 保存到列表 student_list.append(name) # # # 进行循环遍历 for name in student_list: # # 获取名字的第二个字符 value = name[1] print("每个名字的第二个字符是:%s" % value)
运行结果:
请输入一个学生的名字:小张
请输入一个学生的名字:小王
请输入一个学生的名字:小李
请输入一个学生的名字:小康
请输入一个学生的名字:小朱
每个名字的第二个字符是:张
每个名字的第二个字符是:王
每个名字的第二个字符是:李
每个名字的第二个字符是:康
每个名字的第二个字符是:朱
demo2
import random # 从键盘获取5个学生的名字,然后随机抽出一名学生去打扫卫生 # 定义一个列表 student_list = list() # 如果for循环中的临时变量名不用 可以使用_进行占位 for _ in range(5): name = input("请输入一个学生的名字:") # 保存到列表 student_list.append(name) # 定义一个变量 保存随机的下标索引 index = random.randint(0, len(student_list) - 1) print("请%s学生打扫卫生,天意!!!" % student_list[index])
运行结果:
请输入一个学生的名字:小张
请输入一个学生的名字:小李
请输入一个学生的名字:小王
请输入一个学生的名字:小康
请输入一个学生的名字:小朱
请小张学生打扫卫生,天意!!!
<2>修改元素("改")
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
demo:
#定义变量A,默认有3个元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("-----修改之前,列表A的数据-----") for tempName in A: print(tempName) #修改元素 A[1] = 'xiaoLu' print("-----修改之后,列表A的数据-----") for tempName in A: print(tempName)
结果:
-----修改之前,列表A的数据----- xiaoWang xiaoZhang xiaoHua -----修改之后,列表A的数据----- xiaoWang xiaoLu xiaoHua
<3>查找元素("查"in, not in, index, count)
所谓的查找,就是看看指定的元素是否存在
in, not in
python中查找的常用方法为:
- in(存在),如果存在那么结果为true,否则为false
- not in(不存在),如果不存在那么结果为true,否则false
demo
#待查找的列表 nameList = ['xiaoWang','xiaoZhang','xiaoHua'] #获取用户要查找的名字 findName = input('请输入要查找的姓名:') #查找是否存在 if findName in nameList: print('在字典中找到了相同的名字') else: print('没有找到')
说明:
in的方法只要会用了,那么not in也是同样的用法,只不过not in判断的是不存在
index, count
index和count与字符串中的用法相同
>>> a = ['a', 'b', 'c', 'a', 'b'] >>> a.index('a', 1, 3) # 注意是左闭右开区间 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 'a' is not in list >>> a.index('a', 1, 4) 3 >>> a.count('b') 2 >>> a.count('d') 0
例子1:
# 修改和查找元素(in, not in, index, count) # 修改 # # 定义一个列表 my_list = ["hello", 123, 3.14] # 取值 # value = my_list[1] # 修改123为12300 my_list[0] = "python" print(my_list)
运行结果:
['python', 123, 3.14]
例子2:
# 修改和查找元素(in, not in, index, count) # 查找元素(in, not in, index, count) # 定义一个列表 my_list = ["hello", 123, 3.14, 1, True] # in 判断元素是否存在于列表中 flag = 1231 in my_list print(flag) # # 和if语句配合使用 if 123 in my_list: pass # not in if 234 not in my_list: print("234不存在列表中")
例子3:
# 修改和查找元素(in, not in, index, count) # 查找元素(in, not in, index, count) # 定义一个列表 my_list = ["hello", 123, 3.14, 1, True] # index # 查看元素在列表的位置 # 有返将位置 # 没有将报错 index = my_list.index("hello1") print(index) # count # 计算元素在列表中的出现次数 count = my_list.count(True) print(count)
<4>删除元素("删"del, pop, remove)
类比现实生活中,如果某位同学调班了,那么就应该把这个条走后的学生的姓名删除掉;在开发中经常会用到删除这种功能。
列表元素的常用删除方法有:
- del:根据下标进行删除
- pop:删除最后一个元素
- remove:根据元素的值进行删除
demo:(del)
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('------删除之前------') for tempName in movieName: print(tempName) del movieName[2] print('------删除之后------') for tempName in movieName: print(tempName)
结果:
------删除之前------ 加勒比海盗 骇客帝国 第一滴血 指环王 霍比特人 速度与激情 ------删除之后------ 加勒比海盗 骇客帝国 指环王 霍比特人 速度与激情
demo:(pop)
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('------删除之前------') for tempName in movieName: print(tempName) movieName.pop() print('------删除之后------') for tempName in movieName: print(tempName)
结果:
------删除之前------ 加勒比海盗 骇客帝国 第一滴血 指环王 霍比特人 速度与激情 ------删除之后------ 加勒比海盗 骇客帝国 第一滴血 指环王 霍比特人
demo:(remove)
movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('------删除之前------') for tempName in movieName: print(tempName) movieName.remove('指环王') print('------删除之后------') for tempName in movieName: print(tempName)
结果:
------删除之前------ 加勒比海盗 骇客帝国 第一滴血 指环王 霍比特人 速度与激情 ------删除之后------ 加勒比海盗 骇客帝国 第一滴血 霍比特人 速度与激情
例子1:
# 删除元素(del, pop, remove) # del 不是方法是关键字删除 # del 列表名[下标索引] # 定义一个列表 my_list = ["hello", 3.14, 123] del my_list[1] print(my_list)
运行结果:
['hello', 123]
例子2:
# 删除元素(del, pop, remove) # pop # 删除的元素数值 = 列表名.pop(下标索引) # 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素 # 定义一个列表 my_list = ["hello", 3.14, 123] my_list.pop(1) print(my_list)
运行结果:
['hello', 123]
例子3(不指定下标索引默认删除最后一个元素):
# 删除元素(del, pop, remove) # pop # 删除的元素数值 = 列表名.pop(下标索引) # 删除的元素数值 = 列表名.pop() -> 删除列表的最后一个元素 # 定义一个列表 my_list = ["hello", 3.14, 123] my_list.pop() print(my_list)
运行结果:
['hello', 3.14]
例子4:
# 删除元素(del, pop, remove) # remove # 列表名.remove(元素) # 定义一个列表 my_list = ["hello", 3.14, 123] my_list.remove("hello") print(my_list)
运行结果:
[3.14, 123]
例子5:
# 删除元素(del, pop, remove) # clear 清空 # # 定义一个列表 my_list = ["hello", 3.14, 123] my_list.clear() print(my_list)
运行结果:
[]
<5>排序(sort, reverse)
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
reverse方法是将list逆置。
>>> a = [1, 4, 2, 3] >>> a [1, 4, 2, 3] >>> a.reverse() >>> a [3, 2, 4, 1] >>> a.sort() >>> a [1, 2, 3, 4] >>> a.sort(reverse=True) >>> a [4, 3, 2, 1]
例子1:
import random # 列表保存6个元素 每个元素的数值范围在[1, 100]之间 # 定义一个列表 my_list = [] # 循环6次 for _ in range(3): # 准备一个随机数值 value = random.randint(1, 100) # 保存到列表中 my_list.append(value) print(my_list)
运行结果:
[12, 56, 94, 49, 65, 32]
例子2:
import random # 列表保存6个元素 每个元素的数值范围在[1, 100]之间 # 定义一个列表 my_list = [] # 循环6次 for _ in range(6): # 准备一个随机数值 value = random.randint(1, 100) # 保存到列表中 my_list.append(value) print(my_list) # sort 升序 # 列表名.sort() == 列表名.sort(reverse=False) my_list.sort() print(my_list) my_list.reverse() print(my_list)
运行结果:
[77, 37, 20, 95, 23, 53] [20, 23, 37, 53, 77, 95] [95, 77, 53, 37, 23, 20]
例子3:
# 降序 my_list = [77, 37, 20, 95, 23, 53] my_list.sort(reverse=True) print(my_list)
运行结果:
[95, 77, 53, 37, 23, 20]
例子4:
# 字符串 abc [::-1] cba 逆置 倒序 # 列表逆置 倒序 # 列表也支持切片技术 my_list = [77, 37, 20, 95, 23, 53] ret1 = my_list[::-1] print(ret1)
运行结果:
[53, 23, 95, 20, 37, 77]
例子5:
# 倒序 my_list = [86, 33, 87, 36, 83, 95] my_list.reverse() print(my_list)
运行结果:
[95, 83, 36, 87, 33, 86]