第三章 数据类型 — 列表(list)、元组(tuple)
一、列表
- 列表是写在[]之间的,每一项元素使用逗号分隔开的数据类型
- 列表可以完成大多数集合类的数据结构实现,列表中的元素的类型可以不相同,它支持数字、字符串甚至可以包含列表,也就是列表的嵌套
1 索引和切片
- 列表同字符串一样,有索引也可以切片,只不过切片得到的是一个列表
变量[头下标:尾下标:步长]
1 list = ['abcd', 786, 2.23, 'bast', 70.2] 2 tinylist = [123, 'bast'] 3 4 print(list) # 输出完整列表 5 print(list[0]) # 输出列表第一个元素 6 print(list[1:3]) # 从第二个开始输出到第三个元素 7 print(list[2:]) # 输出从第三个元素开始的所有元素 8 print(tinylist * 2) # 输出两次列表 9 print(list + tinylist) # 连接列表
和字符串不相同的是:列表是可以发生改变的,能够直接在原来的对象上进行操作
2 “增”
li = [1,'a','b',2,3,'a'] # li.append('aaa') #增加到最后 # li.append([1,2,3]) #增加到最后 # li.insert(0,55) #按照索引去增添指定元素,插入每一个数据的位置都需要向后移动,效率比较低 # li.extend(['q,a,w']) #迭代的去增 # li.extend(['q,a,w','aaa']) # li.extend('a') # li.extend('abc') # li.extend('a,b,c')
3 “删”
l1 = li.pop(1) #按照索引位置去删除,有返回值,默认为最后一个 print(l1) del li[1:3] #按照位置去删除,也可切片删除没有返回值。 print(li) # li.remove('a') #按照元素去删除 print(li) # li.clear() #清空列表
4 “改”
# li[1] = 'dfasdfas' # 索引改 # print(li) # li[1:3] = ['a','b'] #切片改 如果步长数不是1, 要注意元素个数 # print(li)
5 “查”
切片去查,或者用循环去查
for el in li: print(el)
6 其他操作
- count() : 方法用来统计元素在列表中出现的次数
a = ["q","w","q","r","t","y"] print(a.count("q"))
- index() : 从列表中找某个元素第一个匹配项的索引位置
a = ["q","w","r","t","y"] print(a.index("r"))
- sort() : 排序,默认为升序,reverse = True为降序
- reverse() : 将列表中的元素反向存放
a = [2,1,3,4,5] a.sort() # 他没有返回值,所以只能打印a print(a) a.reverse() #他也没有返回值,所以只能打印a print(a)
7 列表的嵌套
采用降维操作,一层一层分析
lst = [1, "dalao", "jiumo", ["马花藤", ["可口可乐"], "王监零"]] # 找到"dalao" print(lst[1]) # 找到"dalao"和"jiumo" print(lst[1:3]) # 找到"dalao"的"a" print(lst[1][1]) # 将"jiumo"然后字母大写,在放回去 s = lst[2] s = s.capitalize() lst[2] = s print(lst) # 简写 lst[2] = lst[2].capitalize() print(lst) # 把"dalao"换成"dadiao" lst[1] = lst[1].replace("lao", "diao") print(lst) # 把"马花藤"换成"马化藤" lst[3][0] = lst[3][0].replace('花', '化') print(lst[3][0]) lst[3][1].append("雪碧") print(lst)
二、元组
1. 特性:
元组(tuple)俗称不可变的列表,又可以被看成只读列表。元组写在小括号里,元素之间用逗号隔开。
元组中的元素的类型可以不相同。虽然tuple的元素不可变,但是他可以包括可变的对象,比如list列表。
元组与字符串类似,可以被索引,下标从0开始,-1作为结尾。可以做切片处理。
元组构造如果只包含0个或者1个元素的时候有特殊的语法规则:
1 tup1 = () # 空元组 2 tup2 = (20,) # 一个元素,需要在元素后添加逗号
元组可以使用+操作符进行拼接
2 操作
元组不允许“增、删、改”。
元组允许“查看”、“循环“、”切片“
查看的方式可以使用索引,也可以使用 for 循环
1 print(tu[2]) 2 print(tu[::2])
注意:
元组是不允许操作,但是元组有count(),index(),len()等方法。并且元组内的子元素是可以进行操作的,这取决与子元素是否是是可变对象。
1 # 例如子元素为列表list时,可以对列表中的元素进行操作: 2 tu = (1,"哈喽", "how are you?", "jiumo", ["jiumo"]) 3 tu[4].append("dada") 4 print(tu)
3 range()方法
range()是一个可迭代对象
—— range(n) ==> 0 ——> n -1
1 for i in range(0, 10): 2 print(i) # 输出结果为 0,1,2 ......9
—— range(n,m) ==> n ——> m
1 for i in range(2, 0): 2 print(i) # 输出结果为 2,3,4......9
—— range(n, m, i) ==> n ——> m 步长为i
1 lst = ["马頔", "陈粒", "赵雷", "好妹妹"] 2 for i in range(len(lst)): 3 print(i) 4 print(lst[i])