列表及元组
一.列表的介绍:
列表是Python数据类型之一, 其他编程语言也有类似的数据类型.比如JS中的数组,java中的数组等等,他是以 [] 括起来,每个元素用 ',' 隔开,而且可以存放各种数据类型
1 lst = [1,"lx","我是",[1,'我',"长时间啊"],("我叫元组",123,"lx"),"cde",{"我叫字典":48,"字典":"你好啊"},{"我叫集合","集合"}]
列表相比于字符串. 不仅可以存放不同的数据类型. ⽽且可以存放⼤量的数据. 32位 python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.⽽且列 表是有序的(按照你保存的顺序),有索引, 可以切⽚⽅便取值.
f'"{输出内容}"' #输出结果带有 " " 例如 "输出内容"
f'"{el.lower()}"'
1.1 列表的索引与切片
列表和字符串⼀样也拥有索引:
例如:
1 = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 print(lst[0]) # 获取第一个元素 3 print(lst[1]) # 获取第二个元素 4 lst[0] = '马化腾' 5 print(lst) # 注意. 列表是可以发⽣改变的. 这⾥和字符串不⼀样 6 # s = "第一" 7 # s[0] = "我" 8 # print(s) # 字符串不能改变原字符串 9 # TypeError: 'str' obje 10 11 结果 12 麻花腾 13 马云 14 ['马化腾', '马云', '王健林', '许家印', '雷军', '刘强东']
列表的切片:
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 print(lst[0:3]) 3 print(lst[:3]) 4 print(lst[::2]) #列表也有步长 5 print(lst[::-1]) #也能到着取 6 print(lst[-1:-5:-1]) #到着带步长 7 8 #结果 9 ['麻花腾', '马云', '王健林'] 10 ['麻花腾', '马云', '王健林'] 11 ['麻花腾', '王健林', '雷军'] 12 ['刘强东', '雷军', '许家印', '王健林', '马云', '麻花腾'] 13 ['刘强东', '雷军', '许家印', '王健林']
⼆. 列表的增删改查
1. 增, 注意, list和str是不⼀样的. lst可以发⽣改变. 所以直接就在原来的对象上进⾏了操 作
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 lst.append("戴和顺") 3 lst.insert(1,"戴和顺") 4 lst.extend(["李嘉诚"]) #在原列表中末尾处追加一个序列,该序列中的所有元素都会被添加至愿列表的末尾,返回值为None 5 print(lst)
2. 删除
pop() , remove(), clear(), del
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 lst1 = lst.pop(0) #pop() 利用索引删除元素,并返回该元素 3 print(lst1) 4 lst.remove("麻花腾") #直接删除里面元素 5 lst.clear() # 清空列表 6 del lst[1:3] # del 与切片类似 7 print(lst)
3. 修改
索引切片修改
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 lst[0] = '马化腾' 3 lst[1:4:2] = "mayun","wangjianlin" #切⽚修改也OK. 如果步⻓不是1, 要注意. 元素的个数 4 lst[1:5] = ["ninainaidetui"] #如果切⽚没有步⻓或者步⻓是1. 则不⽤关⼼个数 5 print(lst)
4. 查询, 列表是⼀个可迭代对象, 所以可以进⾏for循环
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 for et in lst: 3 print(et)
5. 其他操作
1 lst = [1,2,5,9,6,7,2,5] 2 c = lst.count(2) # 查询次数 3 print(c) 4 lst.sort() #按从小到大的顺序排列 5 lst.sort(reverse=True) # 按从大到小的顺序排列 6 lst.reverse() #翻转 7 print(lst) 8 print(len(lst)) #列表长度
三. 列表的嵌套
采⽤降维操作.⼀层⼀层的看就好.
lst = ['麻花腾','马云','王健林',['xujiayin','王尼玛',['朴槿惠','奥巴马','特朗普'],'普金'],'雷军','刘强东'] #查询朴槿惠 print(lst[3][2][0]) #找到特朗普和奥巴马 print(lst[3][2][1:]) #将xujiayin首字母大写在放进去 lst[3][0] = lst[3][0].capitalize() print(lst) #把特朗普换成特步铺 lst[3][2][2] = "特步铺" print(lst) #将麻给成马 lst[0] = lst[0].replace("麻","马") print(lst) #将特朗普给成傻逼 lst[3][2][2] = lst[3][2][2].replace("铺","傻逼") print(lst) lst[3][2].append("金正恩") print(lst) 结果 朴槿惠 ['奥巴马', '特朗普'] ['麻花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特朗普'], '普金'], '雷军', '刘强东'] ['麻花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步铺'], '普金'], '雷军', '刘强东'] ['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步铺'], '普金'], '雷军', '刘强东'] ['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步傻逼'], '普金'], '雷军', '刘强东'] ['马花腾', '马云', '王健林', ['Xujiayin', '王尼玛', ['朴槿惠', '奥巴马', '特步傻逼', '金正恩'], '普金'], '雷军', '刘强东']
四. 元组和元组嵌套
元组: 俗称不可变的列表.⼜被成为只读列表, 元组也是python的基本数据类型之⼀, ⽤⼩括 号括起来, ⾥⾯可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能 改.
tu = ('麻花腾','马云','王健林','许家印','雷军','刘强东') print(tu) print(tu[0]) print(tu[4]) print(tu[2:5]) #切片之后还是元组 # for循环打印元组 for el in tu: print(el) # 尝试修改元组 # tu[0] = "马化腾" # print(tu) #TypeError: 'tuple' object does not support item assignment # 报错 元组不能修改 # tu[1] = ["你"] # 这样改也不行 # print(tu) # tu[0].append("马化腾") #不能修改 # print(tu) 结果 ('麻花腾', '马云', '王健林', '许家印', '雷军', '刘强东') 麻花腾 雷军 ('王健林', '许家印', '雷军') 麻花腾 马云 王健林 许家印 雷军 刘强东
关于不可变, 注意: 这⾥元组的不可变的意思是⼦元素不可变. ⽽⼦元素内部的⼦元素是可 以变, 这取决于⼦元素是否是可变对象.
元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组 例如: tu = (5,) 空元组 tu = tuper()
元组也有count(), index(), len()等⽅法.
五. range
Python2中两个
range 和 xrange
Python3中只有一个range
range
1 lst = ['麻花腾','马云','王健林','许家印','雷军','刘强东'] 2 # 获取列表索引,拿到索引之后,可以拿到元素 3 for el in range(len(lst)): 4 print(el) 5 print(lst[el]) 6 7 结果 8 0 9 麻花腾 10 1 11 马云 12 2 13 王健林 14 3 15 许家印 16 4 17 雷军 18 5 19 刘强东