【列表类型】
1、按索引取值
索引可正向存取,也可反向存取
l = ['111', 'paipai', 'cat']
# 正向取值
print(l[1])
# 方向取值
print(l[-1])
# 通过索引给列表重新赋值,前提:索引存在
l[0] ='ccat'
print(l)
# 索引不存在的情况下,取值or重新赋值的情况下都会报错
l[3]=111
print(l)
2、切片操作
前闭后开,顾头不顾尾。可指定步长
# 切片操作
l = ['lll', 111, 222, 3333, 4444, 555, 777, 888, 999]
print(l[0:3])
# 指定步长进行操作
print(l[0:8:2])
# 取出整个列表的值
print(l[0:len(l)])
print(l[:]) #不指定 start 与 end 值直接取出整个列表的值
# 切片相当于浅拷贝操作(可变类型数值都是浅拷贝,字符串类型的拷贝就是深拷贝
l_new=l[:]
print(id(l),id(l_new))
l1 =('lll',111,222,3333,4444,555,777,888,999,[1,2,3])
l1[-1][2]=333
print(l)
print(id(l),id(l_new))
# 将列表的值按照倒序顺序取出
print(l[::-1])
msg='hello:egon:<>:18[]==123'
msg2=msg
print(msg,id(msg))
print(msg2,id(msg2))
3、长度
print(len[1,2,3])
4、成员运算符 in not in
print('aaa' in ['aaa',1,2])
print('bbb' not in ['aaa',1,2])
5、往列表中添加值
# 往列表中添加值
# 1)在列表末尾追加
list1 =['aaa','bbb','ccc']
list1.append('ddd')
list1.append('eee')
print(list1)
# 2)在指定的索引前面插入值
list1.insert(0,111)
list1.insert(0,222)
print(list1)
# extend 将A列表中的值按照单个值的样式添加进列表中,而不是整个列表的值都添加进去
new_l=[1,2,3]
l=[111,'paiapi','cat']
l.append(new_l) # 直接在列表中添加进了一个列表
print(l)
# 通过代码实现依次把列表的值添加进去,而不是直接添加整个列表
# 方式一:(比较复杂,不建议使用)
for item in new_l:l.append(item)print(l)
# 方式二:直接通过 extend来实现
l.extend(new_l)
print(l)
# 关注:extend也可以直接把字符串拆开,单个依次添加进去;
l.extend("abdc")
print(l)
l.extend("派派爱吃罐头")
print(l)
5、删除
2)方式二 l.pop() 根据索引删除,会返回删除的值
l = ['aaa', 'bbb', 'ccc']
l.pop() # 不指定索引默认删除最后一个
print(l)
res=l.pop(0) # 指定索引,删除列表中第一个元素
print(l)
print(res)# 3) l.remove() 根据元素进行删除,返回值None
l =[111,'egon',[1,2,3],'hello']
l.remove([1,2,3])
print(l)
6、 循环
for x in [1,'aaa','bbb']:print x
需要掌握的操作
1) l.count(x)
统计x在列表中出现的次数
l =[1,'aaa','bbb','bbb']
print(l.count('bbb')) # 运行结果 2
2) l.index(x)
统计x在列表中首次出现的索引位置
l =[1,'aaa','eeee','bbb','bbb']
print(l.index('bbb')) 运行结果为3
3) l.clear
清空列表
l =[1,'aaa','eeee','bbb','bbb']
# print(l.clear()) # 当()里没有参数时,是不能直接通过print参数执行输出值
l.clear()
print(l) # 输出一个空列表
4)l.reverse()
将列表进行倒序
l=[1,'aaa','bbbb','cccc','bbbb','bb','bbbb']
print(l)
l.reverse()
print(l)
# print(l.reverse()) # 注意 l.reverse不能直接通过print将列表打印出来.当()里没有参数时,是不能直接通过print参数执行输出值.执行命令输出None
5)l.sort()
默认将列表按照从小到大的顺序进行排序,称之为升序
l = [1,0,-2,4,8]
l.sort()
print(l)
# 实现降序排序
l.sort(reverse=True) # TRUE 不能采用小写
print(l)
📢 排序关注点
l = [11,'a',12]
l.sort()
print(l) # 执行报错,只能同种类型的数值进行比较
字符串可以比较大小,主要根据字符在ASCI码中先后顺序加以区别。表中排在后面的字符大于排在前面个字符
# 字母排序
l = ['a','c','b']
l.sort()
print(l)
📚 两个列表之间也可以比较大小,原理同字符串一样,但是对应索引位置的元素必须是同种类型,否则无法比较
l1 = [1,'abc','zaa']
l2 = [1,'abc','zb']
print(l1<l2) # 执行结果为true
🌶 队列与堆栈
队列:FIFO,先进先出
# ✅队列 FIFO,先进先出
from collections import deque
l =deque() # 创建空的双端队列作为队列
# 入队操作
l.append("first")
l.append("second")
l.append("third")
print("队列中的内容为:",l)
# 出队操作
print(l.popleft())
print(l.popleft())
print(l)
堆栈:LIFO 后进先出
# 堆栈:LIFO 后进先出
z=[]
# 入栈操作
z.append('first')
z.append('second')
z.append('third')
print(z)# 出栈操作(不指定顺序,默认先移除最后添加的值
print(z.pop())
print(z.pop())