学习Python Day5 —— 列表
列表
列表是容器型数据类型(序列),将[]作为容器标志,里面多个元素用逗号隔开:[元素1,元素2,…元素N]
列表是可变的(元素的个数和值可变);列表是有序的(元素在容器中有顺序)
任何类型的数据都可以作为列表的元素
列表的增删改查
1.查
a.获取单个元素
语法:
列表[下标]
说明:
1.列表 - 想要获取元素对应的列表
2.[] - 固定写法
3.下标 - 又叫索引;是元素在列表中为止信息对应的标号,每个元素对应的下标有两种
第一种:从0开始依次增加(0表示第一个,1表示第二个,…)
第二种:从-1开始依次减小(-1表示倒数第一个,-2表示倒数第二个…)
b.遍历 - 将列表中的元素一个一个的全部取出来
直接遍历获取元素:
for 变量 in 列表:
循环体
movies = ["八百", "花木兰", "信条", "星际穿越", "熊出没", "肖申克的救赎"]
for x in movies:
print(x)
遍历的同时获取元素和元素对应下标
for 变量1,变量2 in enumerate(列表):
循环体
变量1获取到的是每个元素的下标,变量2获取到的是每个元素
movies = ["八百", "花木兰", "信条", "星际穿越", "熊出没", "肖申克的救赎"]
for x, y in enumerate(movies):
print("x:%d y:%s" % (x, y))
通过遍历列表中每个元素的下标来间接的遍历元素
movies = ["八百", "花木兰", "信条", "星际穿越", "熊出没", "肖申克的救赎"]
for x in range(6):
print(movies[x])
for x in range(0, 6, 2):
print(movies[x])
for x in range(-1, -7, -1):
print(movies[x])
2.增
a. 列表.append(元素) - 在指定的列表的最后添加指定元素
hera_list = ["亚索", "卢仙", "盲僧"]
print(hera_list)
hera_list.append("瑞兹")
print(hera_list)
b. 列表.insert(下标, 元素) - 在列表指定下标前插入指定元素
hera_list.insert(1, "儿童劫")
print(hera_list)
3.删
a. del 列表[下标] - 删除列表中指定下标对应的元素
masters = ["貂蝉", "小乔", "大乔", "甄姬", "王昭君"]
del masters[2]
print(masters)
b. 列表.remove(元素) - 删除列表中指定的元素
masters = ["貂蝉", "小乔", "大乔", "甄姬", "王昭君"]
masters.remove("小乔")
print(masters)
注意:如果元素不存在会报错
如果被删除的元素有多个只删除最前面的那一个
c.
列表.pop() - 取出列表最后一个元素
列表.pop(下标) - 取出列表中指定的元素
masters = ["貂蝉", "小乔", "大乔", "甄姬", "王昭君"]
x = masters.pop()
print(masters, x)
x = masters.pop(1)
print(masters, x)
4.改
列表[下标] = 新值 - 将列表指定下标对应的元素修改成新值
teleplays = ["123", "456", "789", "147", "258", "369"]
teleplays[0] = "海贼王"
print(teleplays)
列表的切片
1.基本语法
列表[开始下标:结束下表:步长] - 从开始下标获取到结束下标前为止,每次增加步长
注意:
1)列表切片的结果一定是列表
2)结束下标对应的元素一定取不到
3)如果步长为正,表示从前往后取,这个时候开始下标对应的元素必须在结束下标对应的元素的前面,否则结果是空列表
如果步长为负,表示从后往前取,这个时候开始下标对应的元素必须在结束下标对应的元素的前面,否则结果是空列表
list1 = [23, 45, 67, 89, 45, 67, 32]
print(list1[1:4:1]) # [45, 67, 89]
print(list1[0:6:2]) # [23, 67, 45]
print(list1[3:3:1]) # []
print(list1[1:4:-1]) # []
print(list1[1:-1:-1]) # []
print(list1[-2:1:-2]) # [67, 89]
2.切片省略
1)省略步长
列表[开始下标:结束下标] - 省略步长,步长就是1:列表[开始下标:结束下标:1]
2)省略开始下标
列表[:结束下标:步长]
步长为正:从第一个元素开始往后取(相当于开始下标是0)
步长为负:从最后一个元素开始往前取(相当于开始下标是-1)
3)省略结束下标
列表[开始下标::步长]
步长为正:取到最后一个元素为止
步长为负:取到第一个元素为止
3.列表的相关操作
1.加法运算和乘法运算
加法:列表1 + 列表2 - 合并两个列表并产生一个新的列表
list1 = [10, 20, 30]
list2 = [100, 200]
list3 = list1 + list2
print(list3) # [10, 20, 30, 100, 200]
# 注意:列表只能和列表相加
乘法:列表N/N列表 - 将列表中的元素重复N次产生一个新列表
list4 = list1*3
print(list4) # [10, 20, 30, 10, 20, 30, 10, 20, 30]
list5 = list1*1
list6 = list1
print(list5, list6) # [10, 20, 30] [10, 20, 30]
2.比较运算
两个列表比较大小 - 比较第一对不相等的元素的大小,谁大对应的列表就大
list11 = [10, 200, 3, 4, 5]
list22 = [10, 20, 3000]
print(list11 > list22)
比较相等
print([1, 2, 3] == [1, 2, 3]) # True
print([1, 3, 2] == [1, 2, 3]) # False
print([1, 2, 3] == "abc") # False
3.in 和 not in
# 元素 in 列表 - 判断列表中是否存在指定的元素
# 元素 not in 列表 - 判断列表中是否不存在指定的元素
print(10 in [1, 20, 10, 4]) # True
print(10 not in [1, 20, 10, 4]) # False
4.相关函数(sum,max,min,sorted,len,list)
1.sum(数字列表) - 求列表中所有元素的和
scores = [34, 89, 90, 78, 65, 78, 60]
print(sum(scores)) # 494
2.max(列表)/min(列表) - 求列表中元素的最大/最小值(注意:列表中元素的类型必须一致,并且元素本身支持比较运算)
scores = [34, 89, 90, 78, 65, 78, 60]
print(max(scores)) # 90
print(min(scores)) # 34
3.sorted(列表) - 将列表中的元素从小到大排序(升序),产生一个新的列表(不会修改原列表)
sorted(列表,reverse=True) - 将列表中的元素从大到小排序(降序),产生一个新的列表(不会修改原列表)
scores = [34, 89, 90, 78, 65, 78, 60]
new_scores = sorted(scores)
print(new_scores) # [34, 60, 65, 78, 78, 89, 90]
scores = [34, 89, 90, 78, 65, 78, 60]
new_scores1 = sorted(scores, reverse=True)
print(new_scores1) # [90, 89, 78, 78, 65, 60, 34]
4.len(列表) - 获取列表长度(列表中元素的个数)
scores = [34, 89, 90, 78, 65, 78, 60]
print(len(scores)) # 7
5.list() - 将指定数据转成列表(数据必须是序列;转换的时候直接将序列中的元素作为新的列表的元素)
列表相关方法
1.列表.clear() - 清空指定列表
names = ["张三", "李四", "王五"]
names.clear()
print(names) # []
2.列表.copy() - 复制指定列表产生一个一模一样的新列表(地址不同)
names = ["张三", "李四", "王五"]
new_names = names.copy()
print(new_names) # ['张三', '李四', '王五']
print(id(names), id(new_names)) # 2309158884424 2309158883912
3.列表.count(元素) - 统计指定元素在列表中出现的次数
nums = [23, 21, 56, 23, 23, 25, 21]
print(nums.count(23)) # 3
print(nums.count(100)) # 0
4.列表.extend(序列) - 将序列中的元素全部添加到列表中
names = ["张三", "李四", "王五"]
names.extend(["熊大", "熊二"])
print(names) # ['张三', '李四', '王五', '熊大', '熊二']
names = ["张三", "李四", "王五"]
names.extend("123")
print(names) # ['张三', '李四', '王五', '1', '2', '3']
5.列表.index(元素) - 获取指定元素在列表中的下标(返回的是0开始的下标值)
names = ["张三", "李四", "王五"]
print(names.index("张三")) # 0
注意:如果元素不存在会报错
如果有多个元素会返回第一个元素的下标
names = ["张三", "李四", "王五"]
print(names.index("张三")) # 0
6.列表.reverse() - 列表倒叙
names = ["张三", "李四", "王五"]
names.reverse()
print(names) # ['王五', '李四', '张三']
7.列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表)
列表.sort(reverse=True) - 将列表中的元素从大到下排序(不会产生新的列表)
nums = [23, 21, 56, 23, 23, 25, 21]
nums.sort()
print(nums) # [21, 21, 23, 23, 23, 25, 56]
nums.sort(reverse=True)
print(nums) # [56, 25, 23, 23, 23, 21, 21]