python中的列表及操作
1、列表类型的定义
-
列表是序列类型的一种扩展,创建后可以随意被修改
-
使用方括号[]或list()创建,元素间用逗号,分隔
-
列表中各元素类型可以不同,无长度限制
-
定义示例:
ls = [88, 'cat', 'dog']
2、列表的操作函数和方法
函数或方法 | 描述 |
---|---|
ls[i] = x | 替换列表ls中序号为i的元素为x |
ls[i:j:k] = lt | 用列表lt替换ls切片后对应元素子列表 |
del ls[i] | 删除列表ls中序号为的i元素 |
del ls[i:j:k] | 删除列表ls中第i到第j以k为步长的元素 |
ls += ls1 | 更新列表ls,将列表ls1中的元素增加到列表ls中 |
ls * n | 更新列表ls,将其元素重复n次 |
ls.append(x) | 在列表ls最后增加一个元素 |
ls.clear() | 删除列表ls中所有元素 |
ls.copy() | 生成一个新列表,将ls中的所有元素赋值给新列表 |
ls.insert(i,x) | 在列表ls的序号为i的位置增加元素x |
ls.pop(i) | 将列表ls中序号为i的元素取出并删除该元素 |
ls.remove(x) | 删除列表ls中第一个出现的为x的元素 |
ls.reveser() | 将列表ls中的元素反转 |
ls.sort(reverse=True) | 列表排序 |
sorted(ls) | 列表排序 |
3、列表操作示例:
-
定义空列表
ls = []
-
向列表ls中增加6个元素
ls += [1, 2, 3, 4, 5, 6]
-
修改ls中的第3个元素
ls[2] = 'a'
-
在ls的第2个位置增加一个元素
ls.insert(2, 1.5)
-
删除ls中第一个位置的元素
del ls[1]
-
删除ls中1-3位置的元素
del ls[1:4]
-
判断ls中是否包含数字0
0 in ls
-
向ls中新增数字0
ls.append(0)
-
返回数字0在ls中的索引
ls.index(0)
-
返回ls的长度
len(ls)
-
返回ls中最大的元素
max(ls)
-
清空ls
ls.clear()
4、列表元素的遍历
car_brand = ['byd', '鸿蒙智行', '长城', '吉利', '红旗']
# 通过元素的方式遍历
for brand in car_brand:
print(brand)
# 通过下标遍历
for i in rang(len(car_brand)):
print(car_brand[i])
5、列表遍历删除漏删问题
-
问题原因:
当在循环中删除列表中的元素时,由于列表的长度在每次删除操作后都会减少,这会导致循环中的索引与列表中的实际元素不匹配。例如,如果你从列表的开头开始删除元素,那么每次删除后,下一个元素的索引会向前移动一位,但循环的索引不会自动调整,导致某些元素被跳过。
-
解决方案
– 方案一:正向遍历时使用continue
ls = ['python', 'aa', 'ab', 'is', 'ac', 'everywhere'] # 删除ls中含'a'的元素 i, l = 0, len(ls) while i < l: for i in range(l): if 'a' in ls[i]: del ls[i]# del后,列表长度变短了,元素左移,原来为序号2的元素下标变成了1 l -= 1 continue # continue:跳过后续的i+=1语句,继续执行for循环,且i不变 i += 1
– 方案二:倒序遍历
ls = ['python', 'aa', 'ab', 'is', 'ac', 'everywhere'] # 删除ls中含'a'的元素 for i in range(len(ls) - 1, -1, -1): print(len(ls) - 1, i) if 'a' in ls[i]: del ls[i] print(ls) ''' 5 5 5 4 4 3 4 2 3 1 2 0 ['python', 'is', 'everywhere'] '''
range(len(my_list) - 1, -1, -1)
生成一个从列表末尾到开始的索引序列,步长为-1,表示每次向前移动一个索引。倒序遍历的主要优势在于它避免了在遍历过程中因删除元素而导致的索引错位问题,从而确保所有需要处理的元素都能被正确处理。
6、列表的排序
import random
# 生成10个随机数的列表
ran_list = []
i = 1
while i <= 10:
ran = random.randint(1, 20)
if ran not in ran_list:
ran_list.append(ran)
i += 1
print(ran_list)
# 求列表中的最大值
max_degit = ran_list[1]
for ran in ran_list:
if max_degit < ran:
max_degit = ran
print(max_degit)
# 冒泡排序
for k in range(len(ran_list)-2):
print(k)
for j in range(len(ran_list)-1-k):
if ran_list[j] < ran_list[j+1]:
ran_list[j], ran_list[j+1] = ran_list[j+1], ran_list[j]
print(ran_list)
# 选择排序
for j in range(len(ran_list)):
print(j)
for k in range(j, len(ran_list)):
if ran_list[j] < ran_list[k]:
ran_list[j], ran_list[k] = ran_list[k], ran_list[j]
print(ran_list)
7、list()将指定内容转成列表
-
list()中只能放可迭代的内容
-
iterable:可迭代的,可以用for…in循环的就是可迭代对象
s = 'abc' print(list(s))# ['a', 'b', 'c'] print(range(1, 10, 2))# range(1, 10, 2) print(list(range(1, 10, 2)))# [1, 3, 5, 7, 9] print(list(5))# TypeError: 'int' object is not iterable
原文地址:https://blog.csdn.net/CNDS7869/article/details/144702133
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!