1. 列表
1.1 定义(list)
- 存放一些数据的容器 比如衣柜 书包
- 列表相比于字符串, 不仅可以存放不同的数据类型.而且可以存放大量的数据
lst = [1, 'a', True, [2, 3, 4]] #中括号,逗号分开
可以是数字,字符串,布尔值,中文,列表等
-
32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素
-
列表是有序的,可以索引和切片
-
print(lst[0]) print(id(lst[0])) id获取对象的内存地址
1.2 列表的创建
# 创建一个列表有三种方式:
# 方式一:(常用)
lst = [1, 2, '宝元']
# 方式二:(不常用)
lst = list() # 空列表
# lst = list(iterable) # 可迭代对象
lst = list('123')
print(lst) # ['1', '2', '3']
# 方式三:列表推导式
lst = [i for i in range(1,5)]
print(l1) # [1, 2, 3, 4]
1.3 列表的索引/切片
lst = ['a', 'b', '宝元', 3, 666]
print(lst[0]) # a
print(lst[-1]) # 666
print(lst[1:3]) # ['b', '宝元']
print(lst[:-1]) # ['a', 'b', '宝元', 3]
print(lst[::2]) # ['a', '宝元', 666]
print(lst[::-1]) # [666, 3, '宝元', 'b', 'a']
- 索引的一个值没用中括号,,切片结果都有中括号
1.4 增
append() :追加 #(在列表的最后位置添加一个内容)
insert() :插入 #以后尽量不要使用(当数据量比较大的时候会影响效率) **可以选择插入的位置**
extend() :迭代添加
lst = ["你好","alex","wusir",1,True,"123"]
lst.append("大煎饼")
print(lst) #['你好', 'alex', 'wusir', 1, True, '123', '大煎饼']
lst.insert(2,"大煎饼")
print(lst) #['你好', 'alex', '大煎饼', 'wusir', 1, True, '123']
lst.extend("可迭代的内容") # 迭代添加
print(lst) #['你好', 'alex', 'wusir', 1, True, '123', '可', '迭', '代', '的', '内', '容']
# 练习:输入用户信息, 添加到列表中
lst = []
while True:
name = input("请输入你要录入的员工信息, 输入Q退出:")
if name.upper() == 'Q':
break
lst.append(name)
print(lst)
1.5 删
del lst -- 删除整个列表
del lst[0] -- 通过索引删除
del lst[1:2] -- 切片删除
del lst[1:4:2] -- 步长删除
clear() :清空列表
remove():通过元素进行删除
pop()
1. 默认删除最后一个
2. 有返回值返回的是被删除的元素
3. 通过索引进行删除
lst = ["你好","alex","wusir",1,True,"123"]
del lst #强制删除,不存在了
print(lst) #没有了,报错,lst未定义
del lst[0] #通过索引删除
print(lst) #['alex', 'wusir', 1, True, '123']
del lst[0:3] # 通过切片删除
print(lst) #[1, True, '123']
del lst[0:3:2] # 通过步长删除
print(lst) #['alex', 1, True, '123']
lst.pop() #默认删除最后一个
print(lst) #['你好', 'alex', 'wusir', 1, True]
lst.pop(3) #通过索引进行删除
print(lst) #['你好', 'alex', 'wusir', True, '123']
lst.remove("wusir") #通过元素名字进行删除
print(lst) #['你好', 'alex', 1, True, '123']
lst.clear() #清空
print(lst) #[]
1.6 改 不用重新赋值,与字符串有区别
lst[0] = 1 #通过索引修改
lst[1:2] ="qaaa" # 通过切片修改,元素可以超出切片的位数
lst[1:4:2] = "12" # 通过切片和不为1的步长修改,占几个位置就添加几个,必须一一对应
lst = ["你好","alex","wusir",1,True,"123"]
lst[1] = "大黑"
print(lst) #['大黑', 'alex', 'wusir', 1, True, '123']
lst[1:3] = "345" # 比切片多 #['你好', '3', '4', '5', 1, True, '123']
lst[1:3] = "大黑" #一样多 #['你好', '大', '黑', 1, True, '123']
lst[1:3] = "大" #比切片少
print(lst) #['你好', '大', 1, True, '123']
lst[1:4:2] = 1,2 #多了少了都会报错
print(lst) #['你好', 1, 'wusir', 2, True, '123']
- list和str是不一样的.lst可以发生改变.所以直接就在原来的对象上进行了操作
1.7 查 切片去查,或者for循环去查
1.7.1 列表是一个可迭代对象, 所以可以进行for循环
lst = ["你好","alex","wusir",1,True,"123"]
for i in lst:
print(i) #
结果:
你好
alex
wusir
1
True
123
lst = ["你好","alex","wusir",[1,True],"123"]
for i in lst:
print(i)
结果:
你好
alex
wusir
[1, True]
123
1.7.3 通过索引查找
lst = ["你好","alex","wusir",[1,True],"123"]
print(lst[3]) # [1, True]
print(lst[3][1]) # True
1.8 其他操作
lst = ["你好","alex","wusir",1,True,"123"]
反转
lst.reverse() # 把这个列表进行调转
print(lst) #['123', True, 1, 'wusir', 'alex', '你好']
lst = [1, 2, 3, 4, 84, 5, 2, 8, 2, 11, 88, 2]
# 排序:必须是数字,其他会报错
lst.sort() # 升序 排序
print(lst) #[1, 2, 2, 2, 2, 3, 4, 5, 8, 11, 84, 88]
lst.sort(reverse=True) # 降序 排序
print(lst) #[88, 84, 11, 8, 5, 4, 3, 2, 2, 2, 2, 1]
# 统计
lst = [1, 2, 3, 4, 84, 5, 2, 8, 2, 11, 88, 2]
num = lst.count(2) # 统计元素2出现的次数,和字符串中功能一样
print(num)
# 通过元素获取下标
lst = [1, 2, 3, 4, 84, 5, 2, 8, 2, 11, 88, 2]
n = lst.index(88) #索引,
print(n) #10
# 获取长度
lst = [1, 2, 3, 4, 84, 5, 2, 8, 2, 11, 88, 2]
print(len(lst))
1.8 列表的镶嵌
lst = ["你好","alex","wusir",[1,True],"123"]
print(lst[3]) # [1, True]
print(lst[3][1]) # True
2. 元组
2.1 定义
- 元组:不可变的列表,用小括号括起来,里面可以放任何数据类型的数据,查询可以,循环也可以,切片也可以.但就是不能改.与字符串类似
2.2 元组的查
tu = ("你好","alex","wusir",(1,True),"123")
tu1 = tu[1] # 支持下标
print(tu1) #alex
tu2 = tu[0:4] # 进行切片查找
print(tu2) #('你好', 'alex', 'wusir', (1, True))
tu = ("你好","alex","wusir",(1,True),"123")
for i in tu:
print(i) # 进行for循环
结果:
你好
alex
wusir
(1, True)
123
2.3 元组的镶嵌
-
tu = ("你好","alex","wusir",(1,True),"123")