列表与元组
一、列表的格式
li = [1,2,3,4,"张三","李四"]
- 列表可以一次性存储多个数据,且可以为不同数据类型
二、列表的常用操作
- 列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。
(一)查找
1、根据下标查找
li = ["张三","李四","王五"] print(li[0]) print(li[1]) print(li[2]) ------------------------ 张三 李四 王五
2、函数
(1)index():返回指定数据所在位置的下标。
- 注意:如果数据不存在则报错。
# 列表序列.index(数据,开始位置下标,结束位置下标) li = ["张三","李四","王五","赵六"] print(li.index("张三",0,2)) -------------------- 0
(2)count():统计指定数据在当前列表中出现的次数。
li = ["张三","李四","王五","赵六"] print(li.count("张三")) ---------------------------------- 1
(3)len():访问列表长度,即列表中数据的个数。
li = ["张三","李四","王五","赵六"] print(len(li)) ------------------------------------- 4
(4)in与not in
- in:判断指定数据在某个列表序列,如果在返回True,否则返回False
- not in :判断指定数据不在某个列表序列,如果不在返回True,否则返回False
li = ["张三","李四","王五","赵六"] name = input("请输入您要搜索的名字:") if name in li: print(f"您输入的名字是{name},名字已经存在!") if name not in li: print(f"您输入的名字是{name},名字不存在!")
(二)增加
1、append():列表结尾追加数据。
li = ["张三","李四","王五","赵六"] li.append("路飞") print(li) ------------------------------------- ['张三', '李四', '王五', '赵六', '路飞']
- 如果append()追加的数据是一个序列,则追加整个序列到列表
li = ["张三","李四","王五","赵六"] lis = ["唱","跳","打篮球"] li.append(lis) print(li) --------------------------------- ['张三', '李四', '王五', '赵六', ['唱', '跳', '打篮球']]
2、extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
li = ["张三","李四","王五","赵六"] li.extend("路飞") print(li) --------------------------------- ['张三', '李四', '王五', '赵六', '路', '飞']
- 如果添加一个序列,则会将序列里面每一个元素添加进去
li = ["张三","李四","王五","赵六"] lis = ["唱","跳","打篮球"] li.extend(lis) print(li) ----------------- ['张三', '李四', '王五', '赵六', '唱', '跳', '打篮球']
3、insert():指定位置新增数据。
li = ["张三","李四","王五","赵六"] li.insert(1,"路飞") print(li) ----------------------------------- ['张三', '路飞', '李四', '王五', '赵六']
(三)删除
1、del
(1)删除整个列表
li = ["张三","李四","王五","赵六"] del li print(li) ---------------------------- NameError: name 'li' is not defined
(2)删除指定数据(根据索引删除)
li = ["张三","李四","王五","赵六"] del li[1] print(li) ----------------------------- ['张三', '王五', '赵六']
# 也可以选则性删除
li = ["张三","李四","王五","赵六"]
del li[1:3]
print(li)
---------------------------
['张三', '赵六']
2、pop():
- 删除指定下标的数据(默认为最后一个),并返回该数据。
li = ["张三","李四","王五","赵六"] li.pop(1) print(li) ------------------------------- ['张三', '王五', '赵六']
3、remove():
- 移除列表中某个数据的第一个匹配项。
li = ["张三","李四","王五","赵六"] li.remove("张三") print(li) ------------------------ ['李四', '王五', '赵六']
4、clear():
- 清空列表
li = ["张三","李四","王五","赵六"] li.clear() print(li) ---------------------- []
(四)修改
1、直接修改
li = ["张三","李四","王五","赵六"] li[0] = "路飞" print(li) ------------------------------ ['路飞', '李四', '王五', '赵六']
2、reverse()逆置
# 把顺序倒过来
li = [1,5,2,8,6,9,4] li.reverse() print(li) ------------------------- [4, 9, 6, 8, 2, 5, 1]
3、sort()排序
- reverse表示排序规则,reverse=True降序,reverse = False升序(默认)
# 列表序列,sort(reverse=False) li = [2,3,5,6,1,4,8] li.sort(reverse=False) print(li) ------------------------- [1, 2, 3, 4, 5, 6, 8] li.sort(reverse=True) print(li) ------------------------ [8, 6, 5, 4, 3, 2, 1]
(五)复制
- copy():复制一个列表
li = ["张三","李四","王五","赵六"] li2 = li.copy() print(li2) ------------------------------ ['张三', '李四', '王五', '赵六']
三、列表的循环遍历
- 依次打印列表中的各个数据
(一)for循环
li = ["张三","李四","王五","赵六"] for i in li: print(i) ------------------------------------ 张三 李四 王五 赵六
(二)while循环
i = 0 li = ["路飞","索隆","山治","娜美"] while i < len(li): print(li[i]) i+=1 ------------------------------- 路飞 索隆 山治 娜美
四、列表的嵌套
- 所谓列表嵌套指的就是一个列表里面包含了其他的子列表
# 找到篮球 li = [['张三','李四','阿坤'],['唱', '跳','篮球'],['甲','乙','丙','丁']] # 第一步:按照下标查找到篮球所在的列表 print(li[1]) # 第二步:从篮球所在的列表里面,再按下标找到数据篮球 print(li[1][2]) ---------------------------------------- ['唱', '跳', '篮球'] 篮球
五、元组
(一)定义元组
- 定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型
# 多个数据元组 t1 = (10,20,30) print(t1) print(type(t1)) # 单个数据元组 t2 = (10,) print(t2) print(type(t2)) ----------------------------------------------- (10, 20, 30) <class 'tuple'> (10,) <class 'tuple'>
- 注意:如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的这个数据的数据类型。
t3 = (10) print(t3) print(type(t3)) ------------------------ 10 <class 'int'>
(二)元组的常见操作
- 元组数据不支持修改,只支持查找,具体如下
1、根据下标查找
tuple = ('aa','bb','cc','dd') print(tuple[0]) -------------------------- aa
2、index():
- 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同
tuple = ('aa','bb','cc','dd') print(tuple.index('aa')) ------------------------ 0
3、count()
- 统计某个数据在当前元组出现的次数
tuple = ('aa','bb','cc','dd') print(tuple.count('aa')) ----------------------------- 1
4、len()
- 统计元组中数据的个数
tuple = ('aa','bb','cc','dd') print(len(tuple)) ----------------------------- 4
5、元组内的直接数据如果修改则立即报错
- 但是如果元组里面有列表,修改列表里面的数据则是支持的。
tuple = (10,20,['aa','bb','cc','dd'],30,40) print(tuple[2]) # 访问到列表 tuple[2][0] = '路飞' print(tuple) ---------------------- ['aa', 'bb', 'cc', 'dd'] (10, 20, ['路飞', 'bb', 'cc', 'dd'], 30, 40)
- 若元组内直接修改则会报错,但通过转变数据类型的方法进行修改
tuple = (1,2,3,4,5) t1 = list(tuple) print(t1) print(type(t1)) t1[0] = '路飞' print(t1) ------------------------ [1, 2, 3, 4, 5] <class 'list'> ['路飞', 2, 3, 4, 5]