共计 3083 个字符,预计需要花费 8 分钟才能阅读完成。
引入
前面 "Python 开发入门" 那一章已经对 python 基本的数据类型进行了大概的描述, 以下我们主要从其内置方法来学习
一. 定义方式
- 在 "[]" 内用逗号分割开多个元素, 无类型限制
- 列表类型的 "工厂" 就是
list
li = [111,222]
🍉背后的操作就是
li = list([111,222])
二. 类型转换
- 但凡可以被 for 循环遍历的类型都可以当做参数传给列表做成其元素
🍉将字符串转成列表类型
x = "aasdasd"
li = list(x)
print(li) #['a', 'a', 's', 'd', 'a', 's', 'd']
🍉将字典转, 转的是字典的 "key"
🍉工作原理
li = []
x = "aasdasd"
for i in x:
li.append(i)
print(li)
三. 常用操作 + 内置方法
🐼优先掌握的操作(***)
1、按索引取值(正 + 反向)+ 可以取值也可以改值
l=['a','b','c']
🍉正向
print(l[1]) #b
🍉反向
print(l[-1]) #c
🍉改值, 改大小写都行
l[2]='d'
print(l) #['a', 'b', 'd']
🍉如果索引不存在则报错
l[8]='d'
print(l) #报错
2、切片,顾头不顾尾 + 步长
li=['song','hai','xing','hhh','lihai']
🍉顾头不顾尾顾头不顾尾、步长
print(li[0:3]) # ['song','hai','xing']
print(li[0:5:2]) # ['song','xing','lihai']
🍉全部切片(浅拷贝)
print(li[:len(li)])
print(li[0:])
print(li[:])
🍉颠倒列表
print(li[::-1]) # ['lihai', 'hhh', 'xing', 'hai', 'song']
ps : 深浅拷贝 https://www.cnblogs.com/songhaixing/p/14015669.html
3、长度
li=['song','hai','xing','hhh','lihai']
print(len(l)) #5
4、成员运算 in 和 not in
li = [111,222,333,[344,33]]
print(111 in l) #True
print(099 in l) #False
5、追加 .append()
- 在列表的末尾追加一个字符
l=["aaa",2222,"cccc"]
res=l.append("ddd")
l.append("eee")
print(l) # ['aaa', 2222, 'cccc', 'ddd', 'eee']
print(res) # None (无返回值)
6、插入 .insert()
- 在 "谁" 的前面插入一个字符
l=["aaa",2222,"cccc"]
res=l.insert(1,"xxx")
print(l) #['aaa', 'xxx', 2222, 'cccc']
print(res) #None (无返回值)
7、删除 del, remove, pop
-
del : 直接删除 "谁", 通用万能删除, 它不支持赋值语法, 赋值会报错
-
.remove() : 直接按照成员来删除
-
.pop () : 按照索引来删除, 有返回值
msg=['song','hai','xing','hhh','lihai']
🍉通过索引来删除
del msg[1]
del msg[1:5:2] #del 加切片 (hai,hhh)
print(msg)
🍉直接通过元素来删除, 没有返回值
msg.remove('hai')
print(msg)
🍉通过索引删除, 并可拿到这个值
msg.pop(1)
msg.pop() #不放置索引默认删除末尾
print(msg)
🍉"pop" 的特有功能: 有返回值
print(msg.pop(1)) #可以弹出这个值
print(msg.remove('hai')) #只删除,不会返回这个值
7、循环取值
l=[111,222,333,444,555,666,777]
for i in l:
print(i)
🐨需要掌握的操作(****)
1. 统计字符的个数 : .count()
l=[111,222,333,444,111,555,666,777]
print(l.count(111)) #2
2. 扩展, 追加多个值 : .extend()
l=[111,222,]
🍉字符串
l.extend("hello")
print(l) #[111, 222, 'h', 'e', 'l', 'l', 'o']
🍉列表
l.extend(["xxx","yyy"])
print(l) #[111, 222, 'h', 'e', 'l', 'l', 'o', 'xxx', 'yyy']
🍉追加字典的话加入的是 "key"
3. 清空列表 : .clear()
msg=['song','hai','xing','song','lihai']
msg.clear()
print(msg) # []
4. 浅拷贝列表 : .copy()
msg=['song','hai','xing','song','lihai']
l=msg.copy()
print(l) # ['song','hai','xing','song','lihai']
5. 计算个数 : .count()
msg=['song','hai','xing','song','lihai']
print(msg.count('song')) # 2
6. 查找索引 : .index()
- 找到指定字符在列表中的索引, 可以指定范围查找
- 列表中没有像字符串中 : find、rfind、rindex 的这些方法
msg=['song','hai','xing','song','lihai']
print(msg.index('song',2,4)) # 3 (找不到会报错)
7. 排序 : .sort()
l=[5,7,9,3,1,4]
l.sort() #排序
print(l)
🍉参数 "reverse" 反序
l.sort(reverse=True) #反向排序
print(l)
8. 反序 : .reverse()
- 将列表顺序反转过来, 改的就是源列表
li = [1, 'egon', 'alex', 'lxx']
li.reverse()
print(li) # ['lxx', 'alex', 'egon', 1]
四. 列表比较的规则
🍉依照 ascll 码表对应的十进制来比较
l1='hello'
l2='k'
print(l1 < l2) #abcd.... 从小到大来比较
l1=[3,'a','g','j',]
l2=[1,'c','g',]
print(l1 > l2) #要一一对应,不然报错
print('Z'>'a') #大写小于小写 A -Z,a-z
print('a'>'G') #大于任何大写的字母
五. 模拟数据结构
1. 队列 : FIFO (先进先出)
- 类似于商场扶梯, 先上先下
l=[]
🍉入队列
l.append("first")
l.append("second")
l.append("third")
print(l) #['first', 'second', 'third']
🍉出队
print(l.pop(0)) #first
print(l.pop(0)) #second
print(l.pop(0)) #third
2. 堆栈 : LIFO (后进先出)
- 类似于往箱子里叠衣服
l=[]
🍉入栈
l.append("first")
l.append("second")
l.append("third")
print(l) #['first', 'second', 'third']
🍉出栈
print(l.pop()) #third
print(l.pop()) #second
print(l.pop()) #first
六. 总结
-
可以有多个值
-
有序, 依赖于索引取值
-
可变类型 ---> 不可 hash 类型
正文完