Python列表list
爪哇斗罗 人气:0一. 创建列表
列表(list)作为Python中基本的数据结构,是存储数据的容器,相当于其它语言中所说的数组。
模拟出的结构如下:
创建列表有两种方式:
1.1 第一种
使用“[ ]”进行创建,内部元素可以是任意数据类型:
list1=["Hello","world",True,0.01,12]
1.2 第二种
使用Python中内置函数list()
list2=list(["Hello","world",True,0.01,12])
列表的特点总结:
列表元素是按照有序顺序进行排序的每个索引对应一个数据列表数据可以重复存储内部元素可以是任意数据类型根据内部元素多少动态分配内存空间
二. 查询列表
2.1 获取列表元素索引
使用index()函数获取元素索引,若列表中有重复元素,只获取第一个位置的索引,元素不存在会抛出错误。
list1 = ["Hello","Hello",True,0.01,12] # 索引为 0 print(list1.index("Hello")) # 索引为 4 print(list1.index(12)) # 索引不存在 ValueError: 100 is not in list print(list1.index(100))
给index()函数设置参数,可以在指定的范围内查找元素的索引位置
list1 = ["Hello", "Hello", True, 0.01, 12] # 从索引1开始到索引4结束,不包括索引4,查找元素True的索引为2 print(list1.index(True, 1, 4))
2.2 获取列表单个元素
对于一个列表,索引从前往后下标是从0~N-1,从后往前是-N~-1,N表示元素个数。
list1 = ["Hello", "Hello", True, 0.01, 12] # 获取索引为2的元素 True print(list1[2]) # 获取索引为-1的元素 12 print(list1[-1]) # IndexError: list index out of range print(list1[5])
2.3 获取列表多个元素
使用索引只能获取一个元素,想要获取列表中多个元素使用切片。
公式:列表名[start : stop :step],意思是从哪里开始到哪里结束,可以定义步长(默认步长为1,step不能为0)。
对于切片的结果就是对原列表的拷贝生成一个新的列表对象。
切片的用法如下:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34] # 取索引1~6,默认步长为1:['Hello', True, 0.01, 12, 32] print(list1[1:6:]) # 取索引1~6,['Hello', True, 0.01, 12, 32] print(list1[1:6:1]) # 取索引1~6,步长为2:['Hello', 0.01, 32] print(list1[1:6:2]) # start不写,默认从0开始:['Hello', True, 12] print(list1[:6:2]) # ['Hello', True, 12] print(list1[0:6:2]) # stop不写, print(list1[0::2]) # step为负数 -1 [34, 32, 12, 0.01, True, 'Hello', 'Hello'] print(list1[::-1]) # [34, 12, True, 'Hello'] print(list1[::-2]) # [32, 12, 0.01, True, 'Hello', 'Hello'] print(list1[5::-1]) # [32, 12, 0.01, True] print(list1[5:1:-1])
注意:若step为负数则是从后往前开始截取切片。
2.3 判断元素是否存在于列表
使用in或者not in,输出的是布尔类型的值。
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34] # True print("Hello" in list1) # False print("Hello" not in list1) # False print(True not in list1) # True print(12 in list1)
遍历列表元素:
list1 = ["Hello", "Hello", True, 0.01, 12, 32, 34] for i in list1: print(i)
三. 列表添加操作
list1=[10,20,30,40,50,60] # 在列表末尾添加一个元素 list1.append(34) # [10, 20, 30, 40, 50, 60, 34] print(list1) # 在列表末尾添加多个元素 list1.extend([21,12,34]) # [10, 20, 30, 40, 50, 60, 34, 21, 12, 34] print(list1) # 在列表任意位置添加一个元素 list1.insert(0,1) # [1, 10, 20, 30, 40, 50, 60, 34, 21, 12, 34] print(list1) # 在列表任意位置添加多个元素,会删除切片的元素,然后添加新元素 list2=["hello",3,40] list1[5:8:]=list2 # [1, 10, 20, 30, 40, 'hello', 3, 40, 21, 12, 34] print(list1)
四. 列表删除操作
list1 = [10, 20, 30, 40, 50, 60, 70] list1.remove(20) # [10, 30, 40, 50, 60, 70] print(list1) # 删除索引为1的元素,不指定删除最后一个元素 list1.pop(1) # [10, 40, 50, 60, 70] print(list1) # 切片删除 list1[1:3] = [] # [10, 60, 70] print(list1)
五. 修改列表元素
为指定的索引修改元素值,也可以使用切片的方式修改。
list1 = [10, 20, 30, 40, 50, 60, 70] list1[3]="Hello" # [10, 20, 30, 'Hello', 50, 60, 70] print(list1) # 切片方式 list1[3:6]=[1,1,1,1] # [10, 20, 30, 1, 1, 1, 1, 70] print(list1)
六. 列表排序操作
有常见的两种方式可以对列表中的元素进行排序,使用sort(),或者sorted()的方式进行排序。
两者区别就是前者排序后不会生成新的列表对象,而后者会生成一个新的列表对象。
list1 = [10, 30, 20, 40, 80, 60] # 原来list1: 1738929360704 print("原来list1:", id(list1)) # [10, 20, 30, 40, 60, 80] 默认升序 list1.sort() print(list1) # 后来list1: 1738929360704 print("后来list1:", id(list1)) # 指定reverse=True为降序 list1.sort(reverse=True) # [80, 60, 40, 30, 20, 10] print(list1) ################################### list2 = [10, 30, 67, 100, 80, 32] # 原来list2: 2357934175872 print("原来list2: ", id(list2)) list2 = sorted(list2) # # [10, 30, 32, 67, 80, 100] print(list2) # 后来list2: 2357931224384 print("后来list2: ", id(list2)) # 降序 list2 = sorted(list2, reverse=True) # [100, 80, 67, 32, 30, 10] print(list2)
此外,还可以使用循环生成列表,称为列表生成式。
主要结构:
[ i*i for i in range(a,b) ]
通过一个for循环生成列表,i*i指的是计算公式。
代码操作:
# 生成1-9的列表式子,并通过i+i计算 list1 = [i + i for i in range(1, 10)] # [2, 4, 6, 8, 10, 12, 14, 16, 18] print(list1)
以上就是对于Python列表的简单操作。
加载全部内容