列表
一、性质
1.列表.容器符号:[],数据类型:list
2.列表是有序的数据类型(每个元素有自己固定的位置,‘下标’)
3.列表是可变的(对表中元素进行增删改操作)
4.列表中可以保存任意类型的数据
5.列表中允许出现重复元素
二、列表的运算
a.列表的拼接(生成一个新列表)
print(list3 + list3)
b.列表的重复(生成一个新列表)
print(list3 * 5)
c.成员运算:in、not in
d.比较运算:列表之间可以比较大小
容器型数据类型比较大小比较的是相同位置的第一对相同数据类型不同子元素的大小
三、列表的下标
1.列表中每个元素都有自己的位置(下标)
2.下标分为正向下标、负向下标
3.正向下标:从左向右数,从0开始
4.负向下标:从右向左,从-1开始
5.通过下标获取元素:有序容器[下标数字]
四、切片
切片:获取有序容器中某一部分元素,得到的结果是和原容器相同类型的容器
a.有序容器[M:N:step] —> 左闭右开[M,N)
b.切片中正向下标和负向下标可以混用
c.切片中开始和结束下标都不写,表示从头取到尾
d.开始不写,结束写,表示从头取到指定下标;反之,从指定下标取到末尾
e.切片只写一个冒号,代表step=1
print(list1[0:7])
print(list1[0:7:3])
print(list1[1:-2:3])
print(list1[-1:-8:-1])
print(list1[:])
print(list1[::-1])
print(list1[::-3])
通过下标获取元素,下标不能越界。 报错
在切片中允许下标越界, 不报错,取所有
五、列表的循环遍历
list1 = [‘A’, ‘B’, ‘C’, ‘D’, ‘C’]
1.直接遍历
for i in list1:
print(i)
2.间接遍历:通过下标遍历:len():获取有序容器的长度
for i in range(len(list1)):
print(f’{i}–>{list1[i]}')
3.enumerate():能够将列表中的每个元素及其下标放到一个元组中,多个元组组成一个可迭代对象
print(enumerate(list1))
for content in enumerate(list1):
print(content)
六、列表的 ’增 ‘’删‘ ’改‘ :
增 :
1.append:追加,向列表的末尾添加元素
list1.append('HTML')
2.insert:插入,向列表的任意位置添加元素
list1.insert(0, 'C++') ,0是索引,C++是增加的新元素
3.extend:追加,从一个容器中将所有元素添加到列表中
list1.extend(['Golong', 'ui']) 增加'Golong','ui'到list1中
改:
1.有序容器[下标] = 值
list1[5] = 'Java'
删:
1.del:del 有序容器[下标]
del list1[6]
2.remove:根据元素删除,从左向右删除,如果某个元素重复,一次只删除一个
list1.remove('3')
3.pop:如果不给pop指定元素,删除的是列表中最后一个元素;或者给pop指定下标
pop方法可以告诉你删除的是那个元素
list1.pop(下标)
4.clear:清空列表,变为空列表
list1.clear()
七,列表的查询方法
1.查找列表中元素:index
index方法默认从左向右查找,找到元素立即停止查找,返回下标
list1.index('被查找的元素'):在列表一种查找元素
3.sum、max、min - 操作对象必须是数字列表(列表中元素全是数字)
sum(list):求和
max(list):求列表中最大值
min(list):求列表中最小值
4.sort默认升序排序,修改列表本身。如果reverse=True,降序排序
list.sort()
5.reverse:将列表倒序,直接对列表本身修改
list.reverse()
6.sorted:默认升序排序,如果reverse=True,降序排序
sorted(list3)
7.count:统计某个元素出现次数
list.count(元素) 在列表list中查找元素出现的次数
八、列表推导式
1.也叫列表生成式
2.生成有元素的列表(在某些场景下能替代append)
3.性能比较:列表推导式 > append
一:语法1
[表达式 for 变量 in 容器]
将100以内5的倍数添加到列表中。
list = [i for i in range(0, 101, 5)]
将某个元素在列表中重复N次
list = [[1, 2, 3] for _ in range(10)]
二、语法2
[符合条件的表达式 for 变量 in 容器 if 条件]
将100以内5的倍数添加到列表中
listt = [i for i in range(101) if i % 5 == 0]
三、语法3
[表达式 for 变量1 in 容器1 for 变量2 in 容器2]
打印九九乘法表
list = [f'{i} * {j} = {i * j}' for i in range(1, 10) for j in range(1, i + 1)]
print(list)
使用列表推导式生成5个人的3科成绩
import random
score = [[random.randint(0, 100) for _ in range(3)] for _ in range(5)]
如果for中变量没有实际意义,可以使用下划线"_"代替