python基础-列表List及内置方法
数据类型之列表-List
-
用途:用于存一个或多个不同类型的值
-
定义:通过中括号存值,每个值之间通过逗号进行分隔
l1 = [1,'a',3,'b']
-
特性:有序、可变、存多个值的数据类型
常用方法:
-
索引取值:正向、反向都可存取值
l1 = [1,'a',3,'b',['egon','alex','sean']] print(l1[1]) # 打印结果:a print(l1[-1]) # 打印结果:['egon', 'alex', 'sean']
-
索引切片
l1 = [1,'a',3,'b',['egon','alex','sean']] print(l1[1:4]) # 获取索引为[1-4)之间的元素,不包含索引为4的元素 print(l1[2:]) # 获取索引为2 之后的元素,包含索引为2的元素 print(l1[:3]) # 获取索引为3 之前的元素,不包含索引为3的元素 print(l1[-2:]) # 获取索引为-2 之前的元素,包含索引为-2 的元素 print(l1[:-2]) # 获取索引为-2 之后的元素,不包含索引为-2 的元素
-
append
语法:
list.append()
,将一个元素增加到列表的最后l1 = [1,'a',3,'b'] l1.append(['name','age']) # 一个列表也是一个元素 print(l1) # 打印结果:[1, 'a', 3, 'b', ['name', 'age']]
-
insert
语法:
list.insert()
通过索引,将元素增加到指定位置l1 = [1,'a',3] l1.insert(1,'b') # 将'b' 插入到索引为1 的位置,列表中的其他元素往后移动 print(l1) # 打印结果:[1, 'b', 'a', 3]
-
extend
语法:
list.exteng()
将可迭代对象或集合打散后,新增到列表的最后# 将字符串新增到列表中 l1 = [1,'a',3] l1.extend("abc") print(l1) # 打印结果:[1, 'a', 3, 'a', 'b', 'c'] # 将元组新增到列表中 l1 = [1,'a',3] l1.extend((1,3,4)) print(l1) # 打印结果:[1, 'a', 3, 1, 3, 4] # 将字典新增到列表中,只取字典的key值 作为列表中的元素 l1 = [1,'a',3] l1.extend({'name':'dawn','age':18}) print(l1) # 打印结果:[1, 'a', 3, 'name', 'age'] # 将集合新增到列表中 l1 = [1,'a',3] l1.extend({4,5,6}) print(l1) # 打印结果:[1, 'a', 3, 4, 5, 6]
-
remove
语法:
list.remove()
通过指定值删除,不能通过索引删除,会报错,存在相同元素时,只会删除第一个l1 = [1, 'a', 3, 4, 5, 6] # l1.remove(0) # 通过索引删除,报错 l1.remove(4) print(l1) # 打印结果:[1, 'a', 3, 5, 6]
-
pop
语法:
list.pop()
不传参时,默认从最后开始删除,否则删除指定索引元素。返回值为被删除的元素,remove() 没有返回值l1 = [1, 'a', 3, 4, 5, 6] d1 = l1.pop() d2 = l1.pop(1) print(d1) # 打印结果:6 print(d2) # 打印结果:a print(l1) # 打印结果:[1, 3, 4, 5]
-
del
语法:
del element
万能删除方法# del的使用,万能删除 l1 = [1, 2, 3, 4, 5] print(f"l1:{l1}") del l1[2] print(f"删除后的l1:{l1}")
-
count
语法:
list.count()
统计当前列表内指定元素的个数# count():用于统计当前列表内指定元素的个数 l1 = ['egon', 'alex', 'tank', 'sean', 'a'] print(f"元素a 出现的次数:{l1.count('a')}")
-
index
语法:
list.index()
获取当前指定元素的索引值,可以指定查找范围(顾头不顾尾),如果没有找到,报错# index():获取当前指定元素的索引值,可指定查找范围(顾头不顾尾),如果没有找到,提示ValueError异常 l1 = ['egon', 'alex', 'tank', 'sean', 'a'] print(f"alex在列表中的出现的位置是{l1.index('alex')}") print(f"从索引0到2中查找tank出现的位置是:{l1.index('tank',0,3)}")
-
sort
语法:
list.sort()
用于排序,可指定排序的方式,默认排序从小到大,reverse=False# sort():排序,在原列表中排序,可指定排序的方式,默认排序为正序 l1 = [9, 5, 84, 2, 56, 35, 28] l1.sort() print("l1默认排序后为:{list}".format(list=l1)) l1.sort(reverse=True) print("l1的倒序为:{list}".format(list=l1)) # 字符串的排序方式按照ASCII 码排序 null < 空格 < 0 < 9 < A < Z < a < z l2 = ['1', 'a', 'M', '9', 'c'] l2.sort() print("l2默认排序后为:{list}".format(list=l2)) l2.sort(reverse=True) print("l2的倒序为:{list}".format(list=l2))
# sort() 和sorted() 的区别 """sort() 和sorted() 的区别 sort() 是列表List 的内置方法,可用通过类名.方法名调用 sort() 是在原列表本身排序,操作,排序完后,不记录原来的位置 sorted() 是python 级的内置方法,调用sorted() 方法后,会生成一个新的列表,列表原来的顺序依然保留 """ l1 = [9, 5, 84, 2, 56, 35, 28] print("l1使用sort 排序后为:{list}".format(list=l1.sort())) # 没有返回值,打印结果为:None print("l1使用sorted 排序后为:{list}".format(list=sorted(l1))) # 返回值为排序后的列表 l1.sort() print("l1使用sort 排序后为:{list}".format(list=l1))
-
clear
语法:
list.clear()
清空列表中的元素,返回一个空列表# clear():清空列表中的元素,返回一个空列表 l1 = [9, 5, 84, 2, 56, 35, 28] print("l1的内容为:{list}".format(list=l1)) print("l1被清空后:{list}".format(list=l1.clear()))
扩展
-
队列:先进先出
# 队列:先进先出; l1 = [] l1.append(1) l1.append(2) l1.append(3) print("队列的实现:") # 实现队列:先进先出 print(l1) for i in l1: l1.pop(0) print(l1)
-
栈:先进后出
栈:先进后出 l1 = [] l1.append(1) l1.append(2) l1.append(3) print("栈的实现:") print(l1) for i in l1: l1.pop() print(l1)
-
拷贝
相当于赋值操作,
list2 = list1
当list1 的内容发生改变时,list2 的值也会相应的发生改变list1 = [1,2,3,['a','b']] list2 = list1 print(list1) # 打印结果:[1,2,3,['a','b']] print(list2) # 打印结果:[1,2,3,['a','b']] list1.append('e') print(list1) # 打印结果:[1,2,3,['a','b'],'e'] print(list2) # 打印结果:[1,2,3,['a','b'],'e']
-
浅拷贝
浅拷贝是copy模块中的copy()函数,
list2 = copy.copy(list1)
,当list1 中的非子序列发生改变,list2 不会发生改变,但如果list1 内的子序列发生变化,list2 的对应子序列也会发生改变import copy as cy list1 = [1,2,3,['a','b']] list2 = cy.copy(list1) list1.append(4) print(list1) print(list2) # list2 没有发生改变 list1[3].append('e') print(list1) print(list2) # list2 子序列中追加了 'e'
-
深拷贝
深拷贝是copy模块中的deepcopy()函数,
list2 = copy.deepcopy(list1)
,无论list1 怎么改变,list2 都不会改变import copy as cy list1 = [1,2,3,['a','b']] list2 = cy.deepcopy(list1) list1.append(4) print(list1) print(list2) # list2 没有发生改变 list1[3].append('e') print(list1) print(list2) # list2 依然没有发生改变