列表(list)
一、初识列表
1.定义
列表是一个可修改的,元素以逗号分割,以中括号包围的有序序列。
2.特点
有顺序,可重复,可修改,可存放不同数据类型的多个数据,由中括号包围
3.声明
列表名 = list()列表名 = []
l1
= list()
l2
= []
names
= ["貂蝉","王昭君","杨玉环","西施"]
age
= list([17,18,19,20])
二、索引
列表是有序的序列,因此可以通过下标索引来获取元素
1.格式
列表名[索引值]
2.编号方式
从左到右(正向):从0开始,逐渐递增,最大索引值:长度-1从右到左(反向):从-1开始,逐渐递减,最小索引值是:-长度
names
= ['zs','ls','ww','ml']
print(names
[2])
print(names
[-2])
print(names
[8])
三、切片
和索引类似,切片是通过冒号来访问一定范围内的元素,一次可以获取多个元素。 注意:切片是将序列拷贝,操作的是拷贝对象,不是原序列。也就是说,切片操作不会改变原数列的元素。
1.格式
列表名[start:stop:step]
start :起始位置,包含在内,可省略,默认为第一个元素stop :结束位置,不包含在内,可省略,默认为最后一个元素。step:步长,可省略,默认为1,正数表示从左到右顺序,负数从右到左顺序
age
= [1,5,1,4,8,9,10,6]
age
[1:3:1]
age
[:1]
age
[1:]
age
[1:6:2]
age
[::1]
age
[-3:-1]
age
[3:1:-1]
age
[::-1]
print(age
)
2.注意事项
负数步长是从右到左遍历,所以负数步长的切片开始索引一定要大于结束索引开始索引和结束索引是负数时,开始索引必须小于结束索引
四、列表的拼接(+)和重复(*)
1.拼接
print('hello'+' world !')
[1,2,3]+['zhangsan','lisi','wangwu']
[1, 2, 3, 'zhangsan', 'lisi', 'wangwu']
注意:只有相同类型的列表才能进行拼接操作。
2.重复
一个数字n乘以一个列表会产生一个新的列表,原来的列表会被重复n次 注意:n必须是整数
l1
= [1, 2]
l2
= l1
* 3
print(l2
)
五、赋值
lst
= [1, 2, 3, 4, 5, 6]
a
, s
, d
, f
, g
, h
= lst
print(a
, s
, d
, f
, g
, h
)
a
, s
, d
, *f
= lst
print(a
, s
, d
, f
)
a
, s
, d
, f
, g
, h
, *j
= lst
print(a
, s
, d
, f
, g
, h
, j
)
a
, s
, d
, *f
, g
= lst
print(a
, s
, d
, f
, g
)
注意:变量数量和元素数量需保持一致。如果不一致需要用*变量名这种格式来接收多个元素值,与位置无关。
六 、增删改查
1.增加数据
方法描述
append(item)将item(整数、字符串、列表…)添加到列表末尾位置。insert(pos,item)将item插入到指定位置。pos如果超过最大索引,将item加到末尾;pos如果小于最小索引,将item加到开头。extend(iterable)末尾一次性追加另一个序列中的多个值。
lst
= [1, 2, 3, 4, 5]
lst
.append
(6)
lst1
= lst
.append
(7)
lst2
= lst
.append
(11,22,33,44,55)
lst
.insert
(2, '222')
lst
.insert
(100, '99999')
lst
.insert
(-100, -8888)
lst
.extend
("asdf")
lst
.extend
("")
lst
.extend
(" ")
lst
.extend
([9, 8, 7])
lst
.extend
([])
lst
.extend
(range(1,100))
总结
append()和insert()一次只能添加一个元素,添加多个需要用extend()extend()只有一个参数,且必须是一个可迭代对象,如果是空的,则什么也不添加。
2.删除数据
方法描述
pop(index)删除指定位置元素,不写默认为最后一个元素,并返回该元素的值。remove(item)删除指定的一个数据,如果有多个,只删除第一个。没有返回值。 数据不存在会报错。del 列表名[]删除列表中的数据或整个列表。del不是列表独有的方法,是Python的内置功能。clear()清空列表数据。
i
= [1, 2, 3, 4, 5, 6, 2]
li
.pop
()
li
.pop
(3)
li
.pop
(100)
li
.remove
(3)
li
.remove
(10)
li
.remove
(2)
del li
[3]
del li
[2:5]
del li
li
.clear
()
3.修改数据
方法描述
列表名[index]列表名[index] = new_value。将值赋给指定位置元素。reverse()顺序倒序。返回一个新列表。sort()按照ASCII码表顺序进行排序,同种类型才可以比较。返回一个新列表。
li
= [1,2,3,4,5,6,2]
li
[2] = 30
li
= [1, 2, 3, 4, 5, 6]
li
.reverse
()
l2
= [1, 5, 6, 8, 31, 23, 5, 9]
l2
.sort
()
l2
.sort
(reverse
=True)
4.查询数据
方法描述
for循环遍历查询列表中所有数据(一条一条的),自定义查看方式直接使用列表名称查看所有数据(中括号括起来的一条数据)index()查看某个数据第一次出现的位置,并返回下标列表名[下标]查看某个位置的数据count()查看某个数据出现的次数
li
= [1, 2, 3, 4, 5, 6, 2]
li
.index
(2)
li
.index
(10)
li
.count
(10)
li
.count
(2)
li
.count
(3)
5.其他操作
方法描述
len(列表名)列表长度,即列表中元素个数max(列表名)列表中元素最大值(数据类型相同,且可以比较)min(列表名)列表中元素最小值(数据类型相同,且可以比较)copy()复制列表
七、列表嵌套
li
= [1,2,3,[4,5,6]]
print(li
[1])
print(li
[3][1])
print(len(li
))
八、列表推导式(高级操作)
1.格式
变量名= [表达式 for 变量 in 列表]
变量名= [表达式 for 变量 in 列表 if 条件]
2.执行流程
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算 或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式
lst
= [1, 2, 3, 4, 5]
l2
= [i
*i
for i
in lst
]
lst
= [1, 2, 3, 4, 5, 6, 7, 8]
l3
= [i
for i
in lst
if i
% 2 == 1]
lst
= [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
l4
= [j
for i
in lst
for j
in i
]
lst
= [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
lst_1
= [i
[0] for i
in lst
]
lst_2
= [lst
[i
][i
] for i
in range(len(lst
))]
3.推导式好处和不足
优点:简化代码,提高代码的简洁性不足:降低代码的可读性