列表和元组
列表的作用是一次性存储多个数据,可以对这些数据进行的操作有:增,删,改,查
列表格式
[数据1,数据2,数据3,....]
创建方式
# 创建空列表
li1 = []
# 创建空列表
li2 = list()
# 创建非空列表
li3 = [1,2,3,4]
print(li1)
print(li2)
print(li3)
操作
先创建一个列表
li = [1,2,'a','b','c']
增
li = [1,2,'a','b','c']
li1 = ['q','w','e','r']
# 1添加单个数据
li.append('nihao')
print(li) # [1, 2, 'a', 'b', 'c', 'nihao']
# 2添加整个序列数据,作为一个整体
li.append(li1)
print(li) # [1, 2, 'a', 'b', 'c', 'nihao', ['q', 'w', 'e', 'r']]
# 3添加整个序列数据,拆开逐个添加进去
li.extend(li1)
print(li) # [1, 2, 'a', 'b', 'c', 'nihao', ['q', 'w', 'e', 'r'], 'q', 'w', 'e', 'r']
# 4指定位置添加数据
li.insert(0,'添加到开头0号位置')
print(li)
# ['添加到开头0号位置', 1, 2, 'a', 'b', 'c', 'nihao', ['q', 'w', 'e', 'r'], 'q', 'w', 'e', 'r']
删
li = [1,2,'a','b','c']
li1 = ['q','w','e','r']
# 1删除整个列表
del li1
# print(li1) # 因为li1不存在而报错
# name 'li1' is not defined. Did you mean: 'li'?
# 2删除单个数据
del li[0]
print(li) # [2, 'a', 'b', 'c']
# 3删除指定数据,还可以把删除的数据,赋给一个变量
a = li.pop(3)
print(li) # [2, 'a', 'b']
print(a) # c
b = li.pop() # 默认最后一个
print(li) # [2, 'a']
print(b) # b
# 4删除第一个匹配项
# 先插入两个相同数据
li.insert(1,'ii')
li.insert(1,'ii')
print(li) # [2, 'ii', 'ii', 'a']
# 删去数据
li.remove('ii') # 不存在就会报错
print(li) # [2, 'ii', 'a']
改
li = [1,2,'a','b','c']
li1 = ['q','w','e','r']
# 1修改指定下标数据
li[0] = 0
print(li) # [0, 2, 'a', 'b', 'c']
# 2改变列表顺序,反转
li.reverse()
print(li) # ['c', 'b', 'a', 2, 0]
# 3排序
# li中既有数字又有字母不能比较,所以选择只含字母的 li1 测试
li1.sort(key=None, reverse=True) # key 以后说,reverse True表示降序,默认是升序
print(li1) # ['w', 'r', 'q', 'e'] 字母的比较应该是按照ASCII码比较的
# 4复制
# 直接等于
li2 = li
# 使用copy函数方法
li3 = li.copy()
# 对比列表的数据发现一样
print(li) # ['c', 'b', 'a', 2, 0]
print(li2) # ['c', 'b', 'a', 2, 0]
print(li3) # ['c', 'b', 'a', 2, 0]
# 对比id说明不一样,id是每个数据的编号,好像和内存地址差不多
print(id(li)) # 2409533138752
print(id(li2)) # 2409533138752
print(id(li3)) # 2409533111680
# 改变列表li的数据,看看其他两个的影响
# 结果发现,copy产生的列表不会随着原来列表的变化而变化
li.pop()
print(li) # ['c', 'b', 'a', 2]
print(li2) # ['c', 'b', 'a', 2]
print(li3) # ['c', 'b', 'a', 2, 0]
# 再看看id,id不会因为列表数据变化而变化,
# id不变,但是数据变化的变量叫可变数据类型
print(id(li)) # 2409533138752
print(id(li2)) # 2409533138752
print(id(li3)) # 2409533111680
查
li = [1,2,'a','b','c']
li1 = ['q','w','e','r']
# 1 index 查找指定数据下标 列表序列.index(数据,开始位置下标,结束位置下标)
# print(li.index(1,1,4)) # 没有就会报错,函数不稳定,不建议用
print(li.index(1)) # 0
# 2 count 统计指定数据出现次数
print(li.count(3)) # 0 不存在也不会报错,可以在查找数据下标前判断有没有
# 3 len 得到列表的数据(元素)个数
print(len(li)) # 5
print(len(li1)) # 4
# 4 判断是否存在
print(1 in li ) # True
print(1 in li1 ) # False
print(1 not in li ) # False
print(1 not in li1 ) # True
列表 遍历 循环
li = [1,2,'a','b','c']
li1 = ['q','w','e','r']
# 1.while
i = 0
while i<len(li):
print(li[i])
i +=1
# 2.for
for i in li:
print(i)
总结
对于列表字符串之类的,还是for循环好用
元组格式
(1,2,3) # 小括号包裹住,英文逗号分割
(11,) #就算只有一个元素也要有个逗号,没有逗号相当于没加括号
元组创建
tup1 = tuple() #()
tup2 = () #()
tup3 = (1,) #(1,)
元组操作
- 和列表一样,但是元组是不可变数据类型
- 只有查找操作,所以列表的增删改操作都没有
- 非要改元组的数据也行,里边嵌入列表就好,只要不怕哪天出错就用