day5 - 列表的相关知识

今日继续学习列表的相关知识,主要内容包括列表切片、列表主要的方法

Python 列表中全是u python 列表 -1_python

1、列表

1)什么是列表

容器型的数据类型(序列),用[]作为容器标志,元素间用逗号隔开:[元素1, 元素2, 元素3, ...] 语法:列表中的元素从0开始,0表示第一个元素,1表示第二个元素,...,以此类推
可以从-1开始:-1表示倒数第一个,-2表示倒数第二个, ... 列表中的元素:可以是任何类型的数据,
元素的值和元素的个数都是可变的
列表中的元素是有顺序的

2)列表的基本操作 - 增删查改

示范用例:movies = ['八佰', '花木兰', '信条', '星际穿越', '盗梦空间', '肖申克的救赎']

a.查 - 获取列表里的元素:
  • 单个查询 - 列表[下标]:
movies[2]    # 信条
  • 遍历
  • 遍历整个列表
movies = ['八佰', '花木兰', '信条', '星际穿越', '盗梦空间', '肖申克的救赎']
for x in movies:
    print(x, end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎
  • 遍历列表的下标来获取元素
    这种方式获取元素更灵活,可以只选取列表里需要的元素,而不必去遍历整个列表
for i in range(5):
    print(movies[i], end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎 
    
for i in range(1, 5, 2):
    print(movies[i], end=' ')  # 花木兰 星际穿越
  • 遍历同时获取元素的下标和元素 - 使用enumetate()函数:
    语法:enumerate(sequence, [start=0]) - sequence:可遍历数据对象 start:下标起始位置
    作用:将可遍历的数据对象(列表、元组或字符串)组合成一个索引序列,同时列出数据下标和数据
for i, j in enumerate(movies):
    print(i, j,  end=',')  # 0 八佰,1 花木兰,2 信条,3 星际穿越,4 盗梦空间,5 肖申克的救赎,

for i, j in enumerate(movies, 3):
    print(i, j,  end=',')  # 3 八佰,4 花木兰,5 信条,6 星际穿越,7 盗梦空间,8 肖申克的救赎,
b.增 - 增加元素
  • 列表.append(元素) - 在列表的末尾新增元素
movies.append('夺冠')
for x in movies:
    print(x, end=' ')  # 八佰 花木兰 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠
  • 列表.insert(下标, 元素) - 在指定下标的前面插入元素
movies.insert(2, '禁闭岛')
for x in movies:
    print(x, end=' ')  # 八佰 花木兰 禁闭岛 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠
c.删 - 删除元素
  • del 列表[下标] - 删除指定下标位置的元素
del movies[1]
for x in movies:
    print(x, end=' ')  # 八佰 禁闭岛 信条 星际穿越 盗梦空间 肖申克的救赎 夺冠
  • 列表.remove(元素) - 定位第一个符合要求的元素并删除(也就是有多个重复值时删除最前的那个)
movies.remove('星际穿越')
for x in movies:
    print(x, end=' ')  # 八佰 禁闭岛 信条 盗梦空间 肖申克的救赎 夺冠
  • 列表.pop() - 取出列表末尾的元素
    列表.pop(下标) - 取出列表中下标对应的元素
movies.pop()
for x in movies:
    print(x, end=' ')  # 八佰 禁闭岛 信条 盗梦空间 肖申克的救赎

movies.pop(2)
for x in movies:
    print(x, end=' ')  # 八佰 禁闭岛 盗梦空间 肖申克的救赎

注意:3个删除之间的相同的和不同点
相同点:
都能达到删除列表中对应元素的目的,都不能删除列表中不存在的元素或者不存在的下标对应的元素
不同点:
del/remove都是直接从内存空间删除掉元素,而pop是将元素取出,并没有直接删除,如果将取出的元素赋值给变量,还可以接着使用该值(若没有用变量来保存,该变量也会自然消亡,不会占用内存)

d.改 - 修改元素
  • 列表[下标] - 修改指定下标对应的元素
movies[3] = '泰坦尼克号'
for x in movies:
    print(x, end=' ')  # 八佰 禁闭岛 盗梦空间 泰坦尼克号
3)列表相关操作 - 运算
1)加法运算

列表1 + 列表2 - 将几个相加的列表的元素首尾相接合在一起,合并产生一个新的序列,顺序和加的顺序一致

list1 = [1, 2, 3, 4]
list2 = [23, 45, 53]
print(list1+list2)   # [1, 2, 3, 4, 23, 45, 53]
print(list2+list1)   # [23, 45, 53, 1, 2, 3, 4]
2)乘法运算

列表 * N / N * 列表 - 将列表重复N次,然后结合形成一个新的列表

list1 = [1, 2, 3, 4]
list2 = [23, 45, 53]
print(2*list1)   # [1, 2, 3, 4, 1, 2, 3, 4]
print(list1*3)   # [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
3)比较运算

比较大小 / 比较相等

* 比较大小(>、<、>=、<=)  -  取列表中第一对不相等的元素,大的元素对应的列表大(进行对比的元素需要是同类型的数据(文本、数字))
list1 = [23, 50, 3, 4, 1]
list2 = [23, 45, 53]
print(list1 > list2)   # True

list1 = [1, 50, 3, 4, 1]
list2 = [23, 45, 53]
print(list1 > list2)   # False
  • 比较相等 - 列表元素的类型、大小、个数、顺序需要完全一样
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
list3 = [1, 2, '3', 4]
print(list1 == list2, list2 == list3)   # True False
4)in / not in

1、in - 判断元素是否在列表里(类型和大小)
2、not in - 判断元素是否不在列表里

list1 = [1, 2, 3, [5, 6]]
print(1 in list1, [1] in list1, 5 in list1, [5, 6] in list1, )   # True False False True
5)函数
# 函数和方法所用的示例列表
scores = [98, 62, 54, 49,68, 89, 75, 32]

函数

作用

示例

sum(列表)

计算列表中所有元素的和

scores = [98, 62, 54, 49,68, 89, 75, 32]

sum(scores) # 527

max(列表)

求出列表中的最大值

max(scores) # 98

min(列表)

求出列表中的最小值

min(scores) # 49

len(列表)

计算列表的长度(元素的个数)

len(scores) # 8

list(序列)

将其他序列转换成列表(转换的内容必须是序列)

list(‘abc’) # [‘a’, ‘b’, ‘c’]

sorted(列表, reverse=True/False)

对列表排序(False - 升序 True - 降序, 默认是False)

创建新的列表,不修改原表

sorted(scores)

# [32, 49, 54, 62, 68, 75, 89, 98]


print(sorted(scores, reverse=True))

# [98, 89, 75, 68, 62, 54, 49, 32]

2、切片

1)语法:

切片 - 获取列表中的部分元素(一次性获取多个元素)
列表[开始下标:结束下标:步长] - 从开始下标开始取元素到结束下标为止,每次下标增加步长(默认是1)获取下一个元素
注意:
1)切片的结果是一定是列表
2)结束下标一定取不到,取不到元素就是空列表
2)步长的正负决定取数的方向:
步长为正 - 从前往后取,结束下标一定在开始下标的后面,否则结果为空
步长为负 - 从后往前取,结束下标一定在开始下标的前面,否则结果为空

list1 = [98, 45, 34, 89, 23, 67, 23, 9, 54, 100, 78]
print(list1[1:5:1])     # [45, 34, 89, 23]
print(list1[2:9:2])     # [34, 23, 23, 54]
print(list1[3:3:1])     # []
print(list1[1:4:-1])    # []
print(list1[1:-1:-1])   # []
print(list1[-2:1:-2])   # [100, 9, 67, 89]
2)切片相关操作
fruits = ['苹果', '香蕉', '猕猴桃', '橘子', '石榴', '葡萄']

切片

示例

列表[开始下标:结束下标] - 省略步长

fruits = [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]

print(fruits[1:4]) # [‘香蕉’, ‘猕猴桃’, ‘橘子’]

print(fruits[-3:-1]) # [‘猕猴桃’, ‘橘子’]

print(fruits[-1:2]) # []

列表[:结束下标:步长] - 省略开始下标

根据步长的正负决定取数的方向和开始下标是0开始-1

print(fruits[:4]) # [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’]

print(fruits[:3:-2]) # print(fruits[-1:3:-2]) -> [‘葡萄’]

print(fruits[:2:-1]) # [‘葡萄’, ‘石榴’, ‘橘子’]

print(fruits[:3:2]) # [‘苹果’, ‘猕猴桃’]

列表[开始下标::步长] - 省略结束下标

fruits = [‘苹果’, ‘香蕉’, ‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]

print(fruits[2:]) # [‘猕猴桃’, ‘橘子’, ‘石榴’, ‘葡萄’]

print(fruits[-3::-1]) # [‘橘子’, ‘猕猴桃’, ‘香蕉’, ‘苹果’]

print(fruits[3::-2]) # [‘橘子’, ‘香蕉’]

列表[::-1] - 省略开始下标和结束下标 - 将列表倒置

产生新的列表

print(fruits[::-1]) # [‘葡萄’, ‘石榴’, ‘橘子’, ‘猕猴桃’, ‘香蕉’, ‘苹果’]

3、列表的方法

# 函数和方法所用的示例列表
scores = [98, 62, 54, 49,68, 89, 75, 32]

方法

作用

示例(操作+操作后列表内容)

列表.append(元素)

在列表末尾添加指定元素

scores = [98, 62, 54, 49,68, 89, 75, 32]

scores.append(98)

# [98, 62, 54, 49, 68, 89, 75, 32, 98]

列表.insert(下标, 元素)

在添加元素到指定下标对应的位置

scores.insert(3, 56)

# [98, 62, 54, 56, 49, 68, 89, 75, 32, 98]

列表.extend(序列)

在列表末尾扩展序列,可以同时添加多个元素(这个元素是一个序列)

scores.extend([28, 56, 87])

# [98, 62, 54, 56, 49, 68, 89, 75, 32, 98, 28, 56, 87]

列表.remove(元素)

删除指定元素 - 直接从内存中删除

scores.remove(max(scores))

# [62, 54, 56, 49, 68, 89, 75, 32, 98, 28, 56, 87]

列表.pop(元素)

去除指定元素 - 只是去除,并未直接删除

scores.pop(28)

# [62, 54, 56, 49, 68, 89, 75, 32, 98, 56, 87]

列表.sort(reverse=True/False)

排序 - 直接在原表上操作,修改原表

scores.sort()

# [32, 49, 54, 56, 56, 62, 68, 75, 87, 89, 98]

列表.reverse()

将列表倒置 - 直接修改原表,而列表[::-1]不修改原表,产生新的列表

scores.reverse()

# [98, 89, 87, 75, 68, 62, 56, 56, 54, 49, 32]

列表.count(元素)

统计元素在对应列表中出现的次数

print(scores.count(56)) # 2

列表.index(元素)

查看元素在列表中对应的索引位置

print(scores.index(75)) # 3

列表.clear()

清除列表中全部内容,直接从内存删除

print(scores.clear()) # None