用途:用于存一个或多个不同类型的值
定义:通过中括号存值,每个值之间通过逗号进行分隔
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 依然没有发生改变
原文:https://www.cnblogs.com/xiaodan1040/p/11806002.html