009-python基础-数据类型-列表和元组
一、列表
- 在python中叫“列表”,其他语言中成为“数组”
- 元素中可以存储字符串、数字甚至变量。
- 元素索引顺序从0开始。 例如 name_list[0] 就是‘alex'
1. 创建列表
1 name_list = ['alex', 'seven', 'eric'] 2 或 3 name_list = list(['alex', 'seven', 'eric'])
2、索引
1 names = ['Alex',"Tenglan",'Eric'] 2 >>> names[0] 3 'Alex' 4 >>> names[2] 5 'Eric' 6 >>> names[-1] # "-1"表示最后一个 7 'Eric' 8 >>> names[-2] # 还可以倒着取 9 'Tenglan'
3、切片
1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 2 >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4 3 ['Tenglan', 'Eric', 'Rain'] 4 >>> names[1:-1] #取下标1至-1的值,不包括-1 5 ['Tenglan', 'Eric', 'Rain', 'Tom'] 6 >>> names[0:3] 7 ['Alex', 'Tenglan', 'Eric'] 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样 9 ['Alex', 'Tenglan', 'Eric'] 10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写 11 ['Rain', 'Tom', 'Amy'] 12 >>> names[3:-1] #这样-1就不会被包含了 13 ['Rain', 'Tom'] 14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个 15 ['Alex', 'Eric', 'Tom'] 16 >>> names[::2] #和上句效果一样 17 ['Alex', 'Eric', 'Tom'] 18 >>> names[0:2][0:1] #切片的基础上再次切片 19 ['Alex']
4、追加
1 >>> names 2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy'] 3 >>> names.append("我是新来的") 4 >>> names 5 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
5、删除
1 >>> del names[2] 2 >>> names 3 ['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的'] 4 >>> del names[4] 5 >>> names 6 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的'] 7 >>> 8 >>> names.remove("Eric") #删除指定元素 9 >>> names 10 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的'] 11 >>> names.pop() #删除列表最后一个值 12 '我是新来的' 13 >>> names 14 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy'] 15 ##### 批量删除 16 name = [9,9,9,9,34,5,6,7,34,34,9,9] 17 for i in range(name.count(34)): 18 name.remove(34) 19 print(name) 20 #输出 21 [9, 9, 9, 9, 5, 6, 7, 9, 9]
6、插入
1 >>> names 2 ['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的'] 3 >>> names.insert(2,"强行从Eric前面插入") 4 >>> names 5 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的'] 6 7 >>> names.insert(5,"从eric后面插入试试新姿势") 8 >>> names 9 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
7、修改
1 >>> names 2 ['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的'] 3 >>> names[2] = "该换人了" 4 >>> names 5 ['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的'] 6 ##### 批量修改 7 name = [9,9,9,9,34,5,6,7,34,34,9,9] 8 for i in range(name.count(9)): 9 index = name.index(9) 10 name[index] = 9999 11 print(name) 12 # 输出 13 [9999, 9999, 9999, 9999, 34, 5, 6, 7, 34, 34, 9999, 9999]
8、扩展
1 >>> names 2 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy'] 3 >>> b = [1,2,3] 4 >>> names.extend(b) 5 >>> names 6 ['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]
9、copy
1 import copy 2 name = ["xx","xx","chh",[1,2,3,4],"hzh","cx","tongcf","zhangjie"] 3 name3 = name.copy() # 浅拷贝,只拷贝第二层嵌套列表的内存地址 4 name4 = copy.deepcopy(name) # 深拷贝,拷贝第二层嵌套列表的真实信息 5 name[3][1] = 4444 6 print("name:",name) 7 print("name3:",name3) 8 print("name4:",name4) 9 #输出 10 name: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie'] 11 name3: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie'] 12 name4: ['xx', 'xx', 'chh', [1, 2, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']
10、统计
1 >>> names 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3] 3 >>> names.count("Amy") 4 2
11、排序和翻转
1 >>> names 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3] 3 >>> names.sort() #排序 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦 7 >>> names[-3] = '1' 8 >>> names[-2] = '2' 9 >>> names[-1] = '3' 10 >>> names 11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3'] 12 >>> names.sort() 13 >>> names 14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom'] 15 16 >>> names.reverse() #反转 17 >>> names 18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
12、获取下标
1 >>> names 2 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1'] 3 >>> names.index("Amy") 4 2 #只返回找到的第一个下标
13、enumrate(为可迭代的对象添加序号)
1 li = [11,22,33] 2 for k,v in enumerate(li, 1): 3 print(k,v) 4 5 # 输出 6 1 11 7 2 22 8 3 33
二、元组
1、元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。它只有2个方法,一个是count,一个是index,完毕。
1 names = ("alex","jack","eric")