Python中的容器之列表:
列表的性质:
a.列表是一个有序的容器型数据类型(有序代表列表中每个元素有自己的固定位置:下标)。
b.列表是一个可变的容器型数据类型(可变代表列表中元素可以被修改:增删改)。
c.列表使用[],列表中元素之间使用,逗号隔开
d.列表的数据类型:list
e.列表中可以存放任意类型的数据。
创建一个列表
list1 = []
下标和切片:
下标:每个元素都有自己的位置。从左向右:正向下标,从0开始递增。从右向左:负向下标,从-1开始递减。
如:
list2 = [100, 200, 300, 400, 500]
# 正向下标:0 1 2 3 4
# 负向下标:-5 -4 -3 -2 -1
# 通过下标获取元素:语法 --> 容器[下标]
print(list2[2], list2[-3])
# 注意:下标不要越界。
# print(list2[100]) # list index out of range
输出:
300 300
切片:能够从原容器中获得新的子容器(从原容器中获取N个元素组成新的容器)
切片语法:
容器[start:stop:step]
start:开始参数,默认为0,可以省略不写;
stop:结束参数,当要获取最后一个元素时,可以不写;
step:步长,决定下一个被获取元素的下标,默认为1,可以省略不写。
切片也是一个左闭右开区间,下一个被获取元素的下标 = 当前被获取元素的下标 + step。
当step>=1时,start代表的元素必须在stop代表的元素左侧;
当step<=-1时,start代表的元素必须在stop代表的元素右侧。
如:
games = ['lol', '王者荣耀', 'PUBG', 'CF', 'DNF', 'QQ飞车']
print(games[1:5])
print(games[1:6], games[1:])
print(games[0:3], games[:3])
print(games[:])
print(games[::2])
print(games[::-1], games[-1::-1])
print(games[::-2])
print(games[1:-2])
输出
['王者荣耀', 'PUBG', 'CF', 'DNF']
['王者荣耀', 'PUBG', 'CF', 'DNF', 'QQ飞车'] ['王者荣耀', 'PUBG', 'CF', 'DNF', 'QQ飞车']
['lol', '王者荣耀', 'PUBG'] ['lol', '王者荣耀', 'PUBG']
['lol', '王者荣耀', 'PUBG', 'CF', 'DNF', 'QQ飞车']
['lol', 'PUBG', 'DNF']
['QQ飞车', 'DNF', 'CF', 'PUBG', '王者荣耀', 'lol'] ['QQ飞车', 'DNF', 'CF', 'PUBG', '王者荣耀', 'lol']
['QQ飞车', 'CF', '王者荣耀']
['王者荣耀', 'PUBG', 'CF']
列表的遍历:
1.直接遍历:
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
for i in list1:
print(i)
2.间接遍历:
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
print(len(list1))
#len():能够查看容器中元素个数(返回容器的长度)
for j in range(len(list1)):
print(f'下标{j} --> 元素{list1[j]}')
列表的拼接和重复:
list1 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
list2 = ['战狼']
# 拼接
print(list1 + list2)
# 重复
print(list2 * 5)
# 列表性质补充:列表中可以出现重复元素。
列表的增删改查:
1.增加:append()从列表末尾开始添加元素;insert()指定位置插入元素
格式:
games = []
# append():向列表中追加元素
games.append('王者荣耀')
games.append('和平精英')
# insert:向列表中插入元素
games.insert(1, '天天酷跑')
print(games)
输出:
['王者荣耀', '天天酷跑', '和平精英']
2.修改:
格式:
容器[下标] = 新元素
games = ['王者荣耀', '天天酷跑', '和平精英']
games[1] = '欢乐斗地主'
print(games)
3.删除:del根据下标删除元素、remove()删除指定元素、pop()根据下标删除元素;clear清除列表。
格式:
games = ['王者荣耀', '欢乐斗地主', '和平精英']
del games[-1]
games.remove('王者荣耀')
content = games.pop(0)
print(content, games)
games.clear()
输出:
欢乐斗地主 []
PS:
删除操作:del、remove、clear等于电脑中直接删除文件。
而pop等于将文件删除时放入回收站,还可以再次恢复。
4.查找:index()用于从列表中查找指定下标的元素。可设置查找的起始位置。如果index找不到元素,则程序会报错。
格式:
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
result = list1.index(5)
print(result)
result1 = list1.index(5, 6)
print(result1)
输出:
4
7
5.其他常用函数:
排序:sort:将列表从小到大排序,sort方法修改的是列表本身。
sorted:将列表从小到大排序,sorted方法不会修改列表本身。
reverse:能够将列表倒序,reverse修改的是列表本身。
添加:
extend:能够将容器中的元素全部添加到列表中。
格式:
# sort函数:
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
list1.sort()
print(list1)
# 添加参数reverse=True,就可以从大到小排序
list1.sort(reverse=True)
print(list1)
# sorted函数:
list2 = [2, 4, 1, 0]
print(sorted(list2), list2)
# 同理添加参数reverse=True,就可以从大到小排序
print(sorted(list2, reverse=True), list2)
# reverse函数:
list4 = [1, 2, 3, 4, 5]
list4.reverse()
print(list4)
# extend函数:
list5 = []
list5.extend(list4)
list5.extend(range(0, 9, 2))
print(list5)
输出:
[1, 2, 3, 4, 5, 5, 6, 7]
[7, 6, 5, 5, 4, 3, 2, 1]
[0, 1, 2, 4] [2, 4, 1, 0]
[4, 2, 1, 0] [2, 4, 1, 0]
[5, 4, 3, 2, 1]
[5, 4, 3, 2, 1, 0, 2, 4, 6, 8]
计数:count:计数,统计列表中某个元素的出现次数
求和:sum:针对于数字列表(列表中全部都是数字的列表)求和。
查找最大、最小值:max、min。
list1 = [1, 2, 3, 4, 5, 6, 7, 5]
list1.count(2)
sum(list1)
t1 = max(list1)
t2 = min(list1)
列表之间比较大小:
1.列表比较大小比较的是列表中元素的大小。
2.列表中参与比较大小的元素位置是一一对应的。
3.从第一对元素开始比较,直到分出大小;否则,两个列表相等。
4.比较大小的元素必须是相同数据类型的。
list1 = [1, 2, 3, 4.897, [3, 4, 5, 6]]
list2 = [1, 2, 3, 4.897, [3, 4, 5, 6, 7]]
print(list1 > list2)
输出:
False
列表去重的多种方式:
一、间接去重:
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '大黄', '张三', '张三', '李四']
newNames = []
for i in names:
if i not in newNames:
newNames.append(i)
print(newNames)
输出:
['张三', '李四', '大黄']
二、for循环元素个数去重:
建议从后向前去重:
从前往后去重输出
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '大黄', '张三', '张三', '李四']
for i in names:
if names.count(i) > 1:
names.remove(i)
print(names)
输出:
['李四', '大黄', '张三', '张三', '李四']
从前往后去重输出
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '大黄', '张三', '张三', '李四']
for i in range(len(names) - 1, -1, -1):
if names.count(names[i]) > 1:
del names[i]
print(names)
输出:
['张三', '李四', '大黄']
原因分析:
for循环执行时,获取元素本质其实还是依据下标,
张三拿出来,下标为0;张三被删除,李四等后续所有元素下标对应减1,
此时for循环进行第二次循环,判断应该获取下标为1的元素,此时下标为1的元素为“大黄”。
三、while循环判断元素个数:
names = ['张三', '李四', '大黄', '张三', '张三', '李四', '大黄', '张三', '张三', '李四']
# x表示元素的下标
x = 0
while x <= len(names) - 1:
if names.count(names[x]) > 1:
del names[x]
else:
x += 1
print(names)
输出:
['大黄', '张三', '李四']
列表推导式:
可一次性生成有多个元素的列表
语法:
基本语法:[表达式 for 变量 in 容器]
带条件的列表推导式:[表达式 for 变量 in 容器 if 条件]
双重或多重循环:[表达式 for 变量 in 容器 for 变量 in 容器]
#示例
list1 = [i for i in range(1, 11)]
print(list1)
list2 = [i for i in range(1, 11) if i % 2 != 0]
print(list2)
list3 = [f'{x * y}' for x in range(1, 10) for y in range(1, x + 1)]
print(list3)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
['1', '2', '4', '3', '6', '9', '4', '8', '12', '16', '5', '10', '15', '20', '25', '6', '12', '18', '24', '30', '36', '7', '14', '21', '28', '35', '42', '49', '8', '16', '24', '32', '40', '48', '56', '64', '9', '18', '27', '36', '45', '54', '63', '72', '81']
本文详细介绍了Python中的列表数据类型,包括列表的性质(有序、可变),创建和初始化列表,下标和切片操作,遍历列表的方法,以及如何进行列表的添加、修改、删除和查找元素。此外,还涉及到了列表的排序、计数、求和、去重和比较大小等操作,最后提到了列表推导式的应用。
1171

被折叠的 条评论
为什么被折叠?



