目录
1、列表
数据类型list,ist是python内置的一种高级数据类型。list是一种有序的集合,基于链表实现。在python中应用很广泛。
Python列表是一个有序的集合,可以包含任何类型的对象,包括数字、字符串、其他列表等。以下是一些Python列表的主要性质:
- 可变性:Python列表是可变的,这意味着你可以更改、添加或删除列表中的元素。
- 有序性:在Python中,列表是有序的。这意味着列表中的元素按照它们被添加的顺序存储。
- 动态性:你可以在运行时向列表添加或删除元素,使其非常适合用于需要动态存储数据的场景。
- 嵌套性:列表可以包含其他列表作为元素,形成嵌套列表(或称二维或多维列表)。
- 内置方法:Python列表有许多内置方法,可以用来操作和修改列表,例如添加元素、删除元素、排序等。
- 切片:Python列表支持切片操作,可以提取或修改列表的一部分。
- 与for循环兼容:Python的for循环可以遍历列表中的所有元素。
- 可与数学运算符交互:大多数数学运算符(如+,-*,等)都可以在列表上使用,可以进行合并、删除或重复操作。
2、创建列表
在Python中,列表是一种数据类型,可以存储多个项目(可以是任何类型的数据,如整数、字符串、其他列表等)。
#利用[]创建列表
lst1=['hello','world','!']
#利用list()
lst2=list(['hello','world','!'])
#创建不同元素类型的列表
lst3=[9,3,'normal']
#列表也可以作为列表的元素
lst4=[[1,2,3],4,5,6]
#列表可以为空
lst5=[]
3、查询
3.1、依据下标查询元素
查询元素同其他语言的数组相同,但是注意列表和字符串相同有两种序号体系:正向递增序列和反向递减序列。如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。
lst6=list(['hello','world','!'])
#第一个元素
print(lst6[0])
#第二个元素
print(lst6[1])
#利用反向
#最后一个元素
print(lst6[-1])
请注意,Python的列表索引不会越界。如果你尝试访问超出列表长度的索引(例如,lst[5]
),Python将抛出一个IndexError
。
如果你想查询的元素不在列表中,但你知道它应该在某个特定位置,你可以使用in
运算符来检查。例如:
lst6=list(['hello','world','!'])
if 'world' in lst6:
print('\'world\''+'在lst6中')
else:
print('不存在')
3.2、依据元素查找下标
在Python中,你可以使用index()
方法来查找特定元素在列表中的位置(也就是下标)。这个方法会返回元素在列表中首次出现的位置。如果元素不在列表中,Python会抛出一个ValueError
。
下面是一个例子
lst7=[1,2,3,4,2,1]
#查找1的下标
print(lst7.index(1))
#查找3的下标
print(lst7.index(3))
#越界的情况下
print(lst7.index(10))
#结果
#0
#2
#ValueError: 10 is not in list
4、列表中元素的增、删、改
4.1、添加元素
append(item)
:在列表的末尾添加一个元素。insert(index, item)
:在指定的位置插入一个元素。
示例
lst7=[1,2,3,4,2,1]
#在尾部添加
lst7.append(2)
print(lst7)
#在指定位置添加
lst7.insert(2,5)#(指定位置,要添加的元素)
print(lst7)
4.2、删除元素
remove(item)
:删除列表中第一个匹配的元素。pop(index)
:删除并返回指定位置的元素。如果没有指定索引,则默认删除最后一个元素。del
语句:根据索引删除指定位置的元素。
示例
lst7=[1,2,3,4,2,1]
#删除value为1的元素
lst7.remove(1)
print(lst7)
#pop()
lst7.pop()
print(lst7)
#del
del lst7[0]
print(lst7)
#结果
#[2, 3, 4, 2, 1]
#[2, 3, 4, 2]
#[3, 4, 2]
4.3、修改元素
直接对列表中的某个位置赋值即可修改该位置的元素。
lst=[1,2,3]
#将第一个元素改为0
lst[0]=0
#结果[0,2,3]
5、对列表中的元素排序
在Python中,对列表的元素进行排序主要有两种方法:sort()
方法和sorted()
函数。
sort()
方法:该方法会直接修改原始列表,排序后的元素会按照新的顺序在列表中排列。sorted()
函数:该函数会生成一个新的排序后的列表,原始列表不会被改变。
my_list = [3, 1, 4, 1, 5, 9, 2]
my_list.sort()
print(my_list) # 输出: [1, 1, 2, 3, 4, 5, 9]
my_list = [3, 1, 4, 1, 5, 9, 2]
sorted_list = sorted(my_list)
print(sorted_list) # 输出: [1, 1, 2, 3, 4, 5, 9]
print(my_list) # 输出: [3, 1, 4, 1, 5, 9, 2] (原始列表保持不变)
默认排序是按照升序(从小到大)进行,如果你想按照降序(从大到小)排序,可以设置参数reverse=True。
对于包含其他数据类型的列表,例如包含元组的列表,你可以提供一个key函数来指定排序的依据。例如,如果你想根据元组的第二个元素进行排序:
my_list = [3, 1, 4, 1, 5, 9, 2]
my_list.sort(reverse=True)
print(my_list) # 输出: [9, 5, 4, 3, 2, 1, 1]
my_list = [(1, 2), (3, 1), (4, 2)]
my_list.sort(key=lambda x: x[1])
print(my_list) # 输出: [(3, 1), (1, 2), (4, 2)]
6、列表的切片
在Python中,列表的切片非常方便且实用,可以用来获取列表的一部分,或者修改列表的一部分。
# 创建一个列表
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用切片获取列表的前5个元素
first_five = my_list[:5] # 结果是 [0, 1, 2, 3, 4]
# 使用切片获取列表的后5个元素
last_five = my_list[5:] # 结果是 [5, 6, 7, 8, 9]
# 使用切片获取从第3个元素到第7个元素(不包括第7个元素)的元素
middle_five = my_list[2:7] # 结果是 [2, 3, 4, 5, 6]
# 修改切片所获取的元素
my_list[2:7] = [10, 11, 12, 13, 14] # 现在 my_list 是 [0, 1, 10, 11, 12, 13, 6, 7, 8, 9]