1. 什么是列表
列表是python的基础数据类型之⼀ ,列表由[]来表示,每一项使用逗号隔开. 列表什么都能装. 能装对象的对象.
列表可以装大量数据,⽽且列表是有序的(按照你保存的顺序),有索引, 可以切⽚⽅便取值.
2. 列表的索引和切片
1. 列表和字符串⼀样也拥有索引 lst = ["李白","杜甫","白居易"] print(lst[0]) # 李白 print(lst[1]) # 杜甫 print(lst[2]) # 白居易 lst[1] = "王维" # 注意: 列表是可以改变的,而字符串不能改变. print(lst) # 李白 王维 白居易 s = "向华强" s[1] = "美" # 字符串不允许改变 print(s) # (报错)TypeError: 'str' object does not support item assignment
2. 列表的切片 lst = ["麻花藤", "王剑林", "⻢芸", "周鸿医", "向华强"] print(lst[0:3]) # ['麻花藤', '王剑林', '⻢芸'] print(lst[:3]) # ['麻花藤', '王剑林', '⻢芸'] print(lst[1::2]) # ['王剑林', '周鸿医'] 也有步⻓ print(lst[2::-1]) # ['⻢芸', '王剑林', '麻花藤'] 也可以倒着取 print(lst[-1:-3:-2]) # 倒着带步⻓
2. 列表的增删改查
*增加 lst = ['赵四','施瓦辛格','黄渤','郭达森','赛利亚'] # 在屁股添加 lst.append("黄宏") # 只能加一个元素(元素可以是一个列表),在原有的基础上进行的操作 #在xxx位置插入xxxx内容 lst.insert(1,"王力宏") # 在指定位置插入添加,原来的元素向后移动⼀位. # 迭代添加,可以加多个元素. lst.extend(["麻花藤",'马云',"王健林",'许家印']) # 迭代添加里面的多个元素 print(lst)
*删除 lst = ['赵四','施瓦辛格','黄渤','郭达森','赛利亚'] lst.pop() # 删除最后⼀个 print(lst) # ["赵四","施瓦辛格","黄渤,"郭达森"] data = lst.pop(2) # 返回的被删除数据(删除的是2号元素) print(data) # 黄渤 print(lst) # ["赵四","施瓦辛格","郭达森"] lst.remove("赵四") # 删除元素 lst.remove("刘能") # 如果不存在会报错 # 切片删除 (指令) del lst[1:3]
# 清空
lst.clear()
print(lst)
*修改 lst = ['王者农药',"魔兽世界","DNF","逆水寒","反恐精英"] lst[0] = "扫雷" print(lst) # ['扫雷', '魔兽世界', 'DNF', '逆水寒', '反恐精英'] lst [1:3]= ["跑跑卡丁车"] # 先删除后添加 print(lst) # ['王者农药', '跑跑卡丁车', '逆水寒', '反恐精英'] lst [1::3] = ["QQ华夏","QQ三国"] # 切片修改的时候. 如果步长不是1. 注意元素的个数 print(lst) # ['王者农药', 'QQ华夏', 'DNF', '逆水寒', 'QQ三国']
*查询(用for循环) lst = ["锅包肉","好人家火锅","巫山烤鱼","清水煮白菜","烤鸭"] for el in lst: # element(元素) print(el)
3. 列表的嵌套
lst = ["alex","gay","wusir",["范冰冰","李冰冰",[1,"火锅","ritian","凤爪"],"王冰冰"]] print(lst[3][2][1]) # 火锅 lst[3][2][2] = lst[3][2][2].upper() # ,ritian大写后的字符串放入索引位置 lst[3][2][0] = 100 # 1变成100 lst[3][2][0] = lst[3][2][0] + 99 # 100 + 99 = 199 print(lst) #['alex', 'gay', 'wusir', ['范冰冰', '李冰冰', [199, '火锅', 'RITIAN', '凤爪'], '王冰冰']]
4. list相关操作
# 查询某个元素出现的次数 lst = ["太白","wusir","太白","康琪","摇摆"] c = lst.count("太白") # 查询太⽩出现的次数 print(c) # 2 # 找到列表元素的下标 print(lst.index("太白")) # 0 # 排序数字(升序, 降序) lst = [1,5,3,4,3,2,44,3,2,22] lst.sort() # 排序, 默认升序 print(lst) # [1, 2, 2, 3, 3, 3, 4, 5, 22, 44] lst.sort(reverse=True) # 排序, 默认降序, reverse= Ture 降序 print(lst) # [44, 22, 5, 4, 3, 3, 3, 2, 2, 1] # 列表里的字符串,翻转倒序输出 lst = ["晓雪","小茹","小花","晓梅"] lst.reverse() # 翻转 print(lst) # ['晓梅', '小花', '小茹', '晓雪']
# 求长度
print(len(lst)) # 4
5. 元组
元组: 俗称不可变的列表.⼜被成为只读列表, 元组也是python的基本数据类型之⼀, ⽤⼩括号括起来, ⾥⾯可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改.
# 元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组 tu = (1) print(type(tu)) # <class 'int'> tu = (1,) print(type(tu)) # <class 'tuple'>
# 空元组的表示
tu = tuple()
tu = ("人民币","美元","英镑","欧元") tu.append("哈哈") # 增加不行 tu[0] = "日元" # 不允许修改 del tu[2] # 删除也不行 # 索引可以用(查询可以) print(tu[2]) # 英镑 # 切片可以(切片后还是元组) print(tu[::2) # ('人民币', '英镑') for el in tu: # 遍历输出(循环可以) print(el)
注意: 元组查询可以. 循环也可以. 切片也可以. 但就是不能改(增删改).
# 关于不可变, 注意: 这⾥元组的不可变的意思是⼦元素不可变.
# ⽽⼦元素内部的⼦元素是可以变, 这取决于⼦元素是否是可变对象. # 元组的第一层是不能进行赋值的, 内部元素没有要求 tu = (1,'哈喽',"how are you?",[]) tu[3].append("峰哥") # 这里的列表是子元素,而列表里面的子元素可以改变 print(tu) # (1, '哈喽', 'how are you?', ['峰哥']) tu = (1,'哈喽',"how are you?","alex") tu[3].upper() # (报错)转换成大写可以, 但是塞不进去了. print(tu)
6. range
# range()是一个可迭代对象,所以可以用for循环. range(n) # 0 -> n-1 for i in range(10): print(i) range(m,n) # m -> n-1 for i in range(1,10): print(i) range(m,n,q) # m -> n-1 每q个取一个 for i in range(1,10,3): print(i) for i in range(100,90,-1): print(i)
0 1 2 3 4 5 # lst = ["砂锅","馒头","盖浇饭","刀削面","大麻花","大煎饼"] # 获取到列表的索引. 拿到索引之后. 可以拿到元素 for i in range(len(lst)): print(i) # i就是list的索引 print(lst[i]) for el in lst: print(el)