发布:2023/10/22 21:49:10作者:管理员 来源:本站 浏览次数:436
list 列表和 dict 字典是 Python 最常用的数据结构,其次 tuple 元组,最后 set 集合;set 集合只有一些特殊场景会用到。
列表是一种有序的集合(和数学中的数组类似),其中的元素可以随时添加和删除,是 Python 中最基本的数据结构之一。
一、列表定义
list 列表定义使用中括号 [ ] ,里面元素可以是任意类型,也包括列表本身,也可以是字典、元组等。
list1 = ['Google', 'woodman', 1987, 2017]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = [2017, 'A', True, list1, list2] # 列表中可以嵌套列表,字典,元组等
注意:列表里面数据可以是任意数据类型,它的长度也是可变的,这就是动态类型好处。
二、访问列表
list 列表(序列)中的每个元素都分配一个数字索引,从 0 开始,第一个索引是 0,第二个索引是 1,依此类推。
我们可以通过索引号访问列表的值,如:
l = ['Google', 'woodman', 1987, 2017]
print('l[0]=', l[0])
print('l[1]=', l[1])
print('l[3]=', l[3])
print('l[-1]=', l[-1]) # 可以倒序访问列表,-1列表倒数第一个
print('l[4]=', l[4]) # 此行会报错,抛出 IndexError 异常,列表下标越界
注意:访问list时索引号不能越界,不然会抛出 IndexError 异常
三、修改和新增列表的值
我们可以对列表的数据项进行修改。可以直接通过索引号修改列表的值,也可以通过 append() 方法对列表增加值。
l = ['Google', 'woodman', 1987, 2017]
print('原列表', l)
# 修改列表第二个值
l[1] = '中国人'
print('修改后的列表', l)
# 在列表的末尾追加值
l.append('末尾追加元素')
print('新增值后的列表', l)
拓展:
可以使用 insert ( index , vaule ) 方法在列表指定位置插入值,它接受两个参数,第一个参数为索引号,第二个参数是待添加的新元素。( insert () 方法很少用到,知道有这个东西就可以,重点在 append ( ) 末尾追加)
示例:
# 在第二个位置插入,插入后 后面元素向后移一位
l.insert(1, '知乎')
print(l)
四、删除元素
删除元素的方法有del、 pop ( )、remove () , 最常用到的是pop ( ),其次remove ( ),最后才是del。
del 、 pop ( )、remove ( ) 他们之间存在明显的区别,
1、del 通过指定具体值删除
del 是 Python 内置用于删除变量的引用(如果比较难理解,你可认为他是删除变量),list列表中的值其实都是一个一个的变量如list[0]、list[1]、list[2]都是他们的变量名。
我们要删除一个变量,直接 【del 变量名】,之后引用变量就会抛出异常。
a=1
del a # 删除变量a,解除a对1的引用
print(a) # 出现NameError 异常,没有a这个变量
l = ['Google', 'woodman', 1987, 2017]
print(l)
del l[0] # 删除列表第一个元素
print(l) # 输出 ['woodman', 1987, 2017]
del l[0:2] # 删除列表第一到第二个元素
print(l)
del l # 删除整个列表
print(l) # 列表无法访问,抛出 NameError ,提示无l这个变量
2、pop ( ) 通过索引号删除
l.pop ( 索引号 ) 是 list 内置方法,通过列表索引号来删除list元素的方法;不指定索引号时删除最后一个元素。pop ( ) 一次只能删除一个元素。
l = ['Google', 'woodman', 1987, 2017]
l.pop() # 删除最后一个元素
print(l) # 输出 ['Google', 'woodman', 1987]
l.pop(0) # 删除列表第一个元素
print(l) # 输出 ['woodman', 1987]
l1 = [1] # 定义一个新列表,只有一个值
print(l1) # 输出 [1]
l1.pop() # 删除列表的值
print(l1) # 输出的是一个空列表,l1 列表还存在
3、remove ( ) 删除首个符合条件的元素
l.remove ( ) 列表内置的方法,他是根据给定值查找列表,找到符合条件的第一个值删除,它也只能一次删除一个。
l = ['Google', 'woodman', 1987, 2017, 1987, 'woodman']
print(l)
l.remove(1987) # 删除 1987
print(l) # 注意观察值的变化,只删除了前一个 1987
l.remove('woodman') # 删除 ‘woodman’
print(l) # 输出 ['Google', 2017, 1987, 'woodman']
l.remove(2) # 删除不存在的值会抛出 ValueError 异常
五、列表切片
列表切片和字符串切片差不多,可以分为以下几类。
1、获取多个元素的值
list[初始位置:结束位置]。
如:list[0:N],取前N个元素也就是索引为0-(N-1)的元素,从0开始取到list的索引号N-1为止,不包含索引号为N的元素。
l = ['Google', 'woodman', 1987, 2017, 'a', 1, 2, 3]
print(l[0:2]) # 第1到第2个
print(l[2:15]) # 2到15个,注意如果结束位超过列表长度不会报错
2、通过步长截取
list[初始位置:结束位置:步长] , 步长表示每多少个取一个。
如:list[0:N:M] 从0开每M个数取一个直到list的N-1元素为止。
l = ['Google', 'woodman', 1987, 2017, 'a', 1, 2, 3]
print(l[0:4:2]) # 每2个数去1个,从第1到第4个
# 输出 ['Google', 1987]
print(l[2::3]) # 从第3个取,每3个取一个,取到结尾
# 输出 [1987, 1]
3、花式用法
l = ['Google', 'woodman', 1987, 2017, 'a', 1, 2, 3]
print(l[:3]) # 从开始到list第3个元素
print(l[1:]) # 从第二个到list结束
print(l[:]) # 获得一个与l相同的list
print(l[-1]) # 取倒数第一个元素
print(l[::-1]) # list倒叙
print(l[-3:-1]) # 倒数第三个到第二个
print(l[-4:-1:2]) # 从倒数第4个每2个取一个,到代数第二个
六、列表常用运算
1、+ 与 * 列表的算术运算
链接两个列表使用 + , 重复复制多个列表使用 * 。
示例:链接列表和重复复制
l1 = [1, 2, 3] + ['a', 'b', 'c'] # 连接
print(l1) # 结果 [1, 2, 3, 'a', 'b', 'c']
l2 = ['Hello!'] * 3 # 重复复制
print(l2) # 结果 ['Hello!', 'Hello!', 'Hello!']
2、in 成员运算
in 判断一个元素是否在列表中,存在返回 True,否则返回 False。
not in 与 in 相反,判断一个元素不存在列表中。
示例:
l1 = [1, 2, 3, 'a', 'b', 'c']
print(2 in l1) # True
print(12 in l1) # False
print(2 not in l1) # False
print(12 not in l1) # True
七、list 列表常用函数
len( list ) 返回列表的长度
max( list ) 返回列表中元素最大值,必须是相同类型对比
min( list ) 返回列表元素最小值,必须是相同类型对比
list( tuple ) 将元组转换为列表
l = ['Google', 'woodman', 1987, 2017, 'a', 1, 2, 3]
print(len(l)) # 列表元素个数
l1 = ['aA', 'bss', 'Ad']
print(max(l1)) # 返回列表元素最大值,l1列表值必须是同类型
l2 = [6, 2, 3, 5, 1]
print(min(l1)) # 返回列表元素最小值,l1列表值必须是同类型
t = (1987, 2017, 'a', 1, 2, 3)
print(list(t)) # 将元组转换为列表
八、list列表常用方法
list.append(obj) #在列表末尾添加新的对象list.count(obj) #统计某个元素在列表中出现的次数list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值list.index(obj) #从列表中找出第一个匹配项的索引位置list.insert(index, obj) #将对象插入列表index位置list.pop(obj=list[-1]) #移除列表中的一个元素(默认最后一个),返回移除值list.remove(obj) #移除列表中的第一个匹配到的值list.reverse() #反向列表中元素list.sort([func]) #对原列表进行排序list.clear() #清空列表list.copy() #复制列表
注意:Python 一切皆对象,变量是对象,函数式对象,方法是对象,类是对象,他的一切都是对象
l = ['Google', 'woodman', 1987, 2017, 'a', 1, 2, 3]
l1 = [7, 8, 9]
l.append('a') # 在列表末尾添加新的对象
print(l)
print(l.count('a')) # 统计某个元素在列表中出现的次数
l.extend(l1) # 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
print(l)
l.index(1987) # 从列表中找出某个值第一个匹配项的索引位置
print(l)
l.insert(2, 'woodman') # 将对象插入列表
print(l)
l.pop() # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
print(l)
l.remove('a') # 移除列表中某个值的第一个匹配项
l.reverse() # 反向列表中元素
print(l)
l2 = l.copy() # 复制列表
print(l2)
l.clear() # 清空列表
print(l)
l3 = [3, 4, 2, 9, 4]
l3.sort() # 对原列表进行排序
print(l3)
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4