基本数据类型:
序列类型: | list,tuple,range |
优先掌握的操作:
- 按索引存取值(正向存取+反向存取):即可存也可以取
- 切片(顾头不顾尾,步长)
- 长度
- 成员运算in和not in
- 追加
- 删除
- 循环
列表 list
作用:按索引位置放置多个值
定义:[ ] 中括号内,每个元素间用逗号隔开
点击收起代码
l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])
类型转换:
但凡能够被for循环遍历的类型都可以当作参数传给list()转成列表类型,list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
list('hello') # 结果: ['h', 'e', 'l', 'l', 'o']
# 原理 等同与for循环
l1 = []
for x in 'hello':
l1.append(x) # 结果: ['h', 'e', 'l', 'l', 'o']
# ===================
list({"name":"jason","age":18}) # 结果:['name', 'age']
list((1,2,3)) # 结果:[1, 2, 3]
list({1,2,3,4}) # 结果:[1, 2, 3, 4]
优先掌握:
1、按索引取值(正向存取+反向存取):即可以取也可以改
(代码隐藏)点击查看代码
# 1、按索引取值(正向存取+反向存取):即可以取也可以改
# 例
l = [111, 'egon', 'hello']
# 正向取
res = l[0] # 111
# 反向取
res = l[-1] # hello
# 也可以取可以改:索引存在则修改对应的值
# 把l列表索引位置0的元素修改为222
l[0] = 222 # [222, 'egon', 'hello']
# 无论是取值操作还是赋值操作:索引不存在则报错
2、切片(顾头不顾尾,步长)
(代码隐藏)点击查看代码
# 2、切片
# 【切片】是属于copy行为 (顾头不顾尾)索引的扩展应用
# 取值前三个
l = [111, 'egon', 'hello', 'a', 'b', 'c', 'd']
# 正向取值
x = l[0:3] # [111, 'egon', 'hello']
# 正向步长取值 步长 (2)
x1 = l[0:5:2] # [111, 'hello', 'b'] 取索引位置 0 2 4 的值
# 把整个列表倒过来,反向取值
x2 = l[::-1] # ['d', 'c', 'b', 'a', 'hello', 'egon', 111]
# 把列表切出来赋值给新列表
new_l = l[:] # 等同于浅拷贝一个列表给新列表new_l
#####################################################
3、长度
(代码隐藏)点击查看代码
# 3、长度
# 列表统计 len统计的是元素的个数
X = len([1, 2, 3]) # 3 3个元素
#####################################################
4、成员运算in和not in
(代码隐藏)点击查看代码
# 4、成员运算in 和 not in
# 判断aaa是否存在与列表
if 'aaa' in ['aaa', 1, 2]:
i = "yes"
else:
i = "no"
# 输出结果 yes
######################################################
5、追加
(代码隐藏)点击查看代码
# 5、往列表里******添加*****值
# 5.1、追加
# (了解) append默认在列表最末端追加
# 例
l = [111, 'egon', 'hello']
l.append(1233) # [111, 'egon', 'hello', 1233]
l.append(4445) # [111, 'egon', 'hello', 1233, 4445]
#############
# 5.2、插入值
# insert按照指定索引位置插入值
# 例
l = [111, 'egon', 'hello']
l.insert(1, 2222) # [111, 2222, 'egon', 'hello']
# print(l)
#############
6、添加
(代码隐藏)点击查看代码
# # 6、 添加
# # 往列表里添加子列表
l = [111, 'egon', 'hello']
new_l = [1, 2, 3]
# l.append(new_l) # [111, 'egon', 'hello', [1, 2, 3]]
# # print(l)
####
# # 把新列表的值添加到现有列表内
# 实现代码
for itme in new_l:
l.append(itme) # [111, 'egon', 'hello', 1, 2, 3]
# print(l)
#####
# extend实现上述功能(推荐)
l.extend(new_l) # [111, 'egon', 'hello', 1, 2, 3]
l.extend('abc') # [111, 'egon', 'hello', 'a', 'b', 'c']
#########################################################
7、删除
(代码隐藏)点击查看代码
# 7、删除
# 方式一:del通用的删除方法,只是删除没有返回值,不支持赋值语法。
l = [111, 'egon', 'hello']
del l[1] # [111, 'hello']
######
# # 方式二:.pop是根据索引删除,会返回删除的值。
l = [111, 'egon', 'hello']
l.pop() # [111,'egon'] 默认删除列表最后一个
l.pop(1) # [111,'hello']
# res = l.pop(1) # egon 返回删除的值
######
# 方式三:.remove()回根据元素删除,返回None
l = [111, 'egon', 'hello', ['a', 'b', 'c']]
l.remove(['a', 'b', 'c']) # [111, 'egon', 'hello']
#########################################################
8、循环
(代码隐藏)点击查看代码
# 8、循环
l1 = [1, 'aaa', 'bbb']
for x in l1: # 把列表循环出单个元素输出
# !!!!!!!!!!需要掌握!!!!!!!!!!!
l = [1, 'aaa', 'bbb', 'aaa', 'aaa']
############################
# 1、l.count() 查找元素出现次数
res = l.count('aaa') # 输出结果 3 表示在l列表里出现3次
#############
# 2、l.index() 查找元素索引位置,找不到元素程序就报错
res = l.index('aaa') # 输出结果 1 表示 'aaa' 在列表里的索引是1
#############
# 3、l.clear() # 清空整个列表的元素,不能传入值,填写传入值就报错
l.clear() # 输出结果 [] l列表为空,元素全部清楚
#############
# 4、l.reverse() 把列表反转,不是排序行为
l.reverse() # 输出结果 ['aaa', 'aaa', 'bbb', 'aaa', 1] 列表实现反转
############
# 5、l.sort() 排序 只允许列表内元素为同种数据类型 才可使用此排序
# 默认把元素重小到大排,称之为升序
l12 = [-1,-4,1,0]
# l12.sort() # [-4, -1, 0, 1] 把列表升序
l12.sort(reverse=True) # 输出结果 [1, 0, -1, -4] 从大到小排序,设置为降序
# 了解:字符串是可以比大小的,按照对应的位置的字符依次对比
# 字符串是按照ASCI码表的先后顺序区分大小。表内排在的字符越靠后越大。
##############
#了解: 列表类型也可以比大小,原理同字符一样
# 两个列表对比时,对于索引位置必须为同种数据类型,如果数据类型不同程序会报错
l2 = [1,'aa','222']
l3 = [2,'dd','123']
print(l2 > l3) # 结果False
##########################################################
9 、补充
(代码隐藏)点击查看代码
# 补充
# 1、队列:first in first out
# FIFO,先进先出
# 模拟入队操作
l4 = []
l4.append('first')
l4.append('second')
l4.append('third')
print(l4)
# # 模拟出队操作
print(l4.pop(0))
print(l4.pop(0))
print(l4.pop(0))
# 输出结果
# first
# second
# third
############
# 2、堆栈:last in first out
# LIFO 后进先出
# 模拟入栈
l4 = []
l4.append('first')
l4.append('second')
l4.append('third')
####
# 模拟出栈
print(l4.pop())
print(l4.pop())
print(l4.pop())
# 输出结果
# third
# second
# first