列表
列表的使用:
列表是可变数据类型,因此列表的方法,都是直接修改列表原始值
list = ["panda","chimpanzee","zebra","lion","cat"]
(1)通过下标访问列表中的元素,下标从0开始计数
1 >>> list[0]
2 'panda'
3 >>> list[2]
4 'zebra'
5 >>> list[-1] 倒着访问,下标从【-1】开始
6 'cat'
7 >>> list[-5]
8 'panda'
(2)切片 list = ["panda","chimpanzee","zebra","lion","cat"]
1 >>> list[1:4]
2 ['chimpanzee', 'zebra', 'lion'] #顾头不顾尾
3 >>> list[1:-1]
4 ['chimpanzee', 'zebra', 'lion'] #顾头不顾尾,下标【1】为'chimpanzee',【-1】为从右边数第一个
5 >>> list[0:3]
6 ['panda', 'chimpanzee', 'zebra'] #0表示从第一个开始取
7 >>> list[:3]
8 ['panda', 'chimpanzee', 'zebra'] #从第一个开始取也可以为空表示
9 >>> list[3:]
10 ['lion', 'cat'] #从下标【3】取到最后一个,包括最后一个
11 >>> list[3:-1]
12 ['lion']
13 >>> list[0::2]
14 ['panda', 'zebra', 'cat'] #此处的2表示,每隔一个元素,取一个
15 >>> list[::2]
16 ['panda', 'zebra', 'cat']
17 >>> list[2:2] ------ [] #此处取值为空
list[:] 对list全部切片,可以起到复制的作用,同时 list[:]也可以使用list所有的方法
(2)列表的常用操作
追加:append()加到列表最尾
1 >>> zoo
2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
3 >>> zoo.append("追加")
4 >>> zoo
5 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
6 >>>
View Code
插入: 想插入哪里,下标就写哪里
1 zoo
2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
3 >>> zoo.insert(1,"从chimpanz前插入")
4 >>> zoo
5 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
6 >>> zoo.insert(4,"从lion前插入")
7 >>> zoo
8 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
9 >>>
View Code
修改:
1 >>> zoo
2 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
3 >>> zoo[1]="换成gorilla"
4 >>> zoo
5 ['panda', '换成gorilla', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
6 >>>
View Code
删除:(有三种删除方式 del ,remove【删除指定元素,如果有多个,取列表的第一个匹配项】,pop【如果不输入下标,默认删除最后一个】)
1 >>> del zoo[1]
2 >>> zoo
3 ['panda', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
4 >>> zoo.remove("从lion前插入")
5 >>> zoo
6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
7 >>> zoo.pop() #删除列表最后一个值
8 '追加'
9 >>> zoo
10 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
11 >>>
View Code
#pop虽然是删除,不过会获取每一个被删除的元素,list2.append(list.pop()) ,从而达到list删除,list2增加的目的
扩展:
1 >>> zoo
2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
3 >>> b=[1,2,3]
4 >>> zoo.extend(b)
5 >>> zoo
6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
7 >>>
View Code
统计:
1 >>> zoo
2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
3 >>> zoo.count("newone") #统计列表中有多少个【newone】
4 1
5 >>>
View Code
排序和反转: 其中排序是按照ASCII码顺序进行排序
1 >>> zoo.sort()
2 Traceback (most recent call last): #python3中 int和str不能排序
3 File "<pyshell#45>", line 1, in <module>
4 zoo.sort()
5 TypeError: '<' not supported between instances of 'int' and 'str'
6 >>> zoo[-1]="3" #修改
7 >>> zoo[-2]="2"
8 >>> zoo[-3]="1"
9 >>> zoo
10 ['cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra', '1', '2', '3']
11 >>> zoo.sort() #排序
12 >>> zoo
13 ['1', '2', '3', 'cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra']
14 >>> zoo.reverse() #反转
15 >>> zoo
16 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1']
17 >>>
View Code
"""
有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序.
"""
l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3]
ret = list(set(l1))
print(ret)
ret.sort(key=l1.index) # 按值在l1中的索引进行排序
print(ret)
l2 = [
{"name": "alex", "age": 36},
{"name": "GoldBoss", "age": 30},
{"name": "xiaoyima", "age": 18}
]
# 课后作业
l2.sort(key=lambda x: x["age"])
print(l2)
sort(key=lst.index)
获取下标:
1 >>> zoo
2 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1']
3 >>> zoo.index("panda")
4 1
5 >>>
清空:
zoo.clear() #清空列表
复制:浅copy
1 >>> zoo2222 = zoo.copy() #复制
2 >>> zoo2222
3 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
4 >>> zoo[0]="dog"
5 >>> zoo
6 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
7 >>> zoo2222
8 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
9 >>>
10
11 此时修改了zoo的一个元素,zoo2222不会一起改
12 但这只是浅copy,只复制了第一层
13
14 当zoo的元素中包含了列表,修改改聊表中的值,zoo2也会一起修改
15 >>> zoo
16 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
17 >>> zoo2 = zoo.copy()
18 >>> zoo2
19 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
20 >>> zoo[6][0]="PETER"
21 >>> zoo2
22 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['PETER', 'tony']]
23 >>>
24
25 另外:
26 list = list2
27 此时与 str = str2 不同,
28 此时的list相当于只向list2的内存地址,list2修改,list也会跟着一起修改
View Code
若要进行深copy:copy模块中copy还是浅copy,deep copy才是深copy
1 1 import copy
2 2 zoo3 = copy.deepcopy(zoo)
3 3 #此时修改zoo,不管zoo中是否包含列表,zoo3都不会影响。
View Code
小结,列表用到的函数有:append,insert,extend,pop,remove,clear,index,count,reverse,sort,copy
元组(tuple)
只可查列表,只能查
可用函数只有 count,index
http://www.runoob.com/python3/python3-tuple.html
>>> a = (1,2,3)
>>> b = (5,6,7)
>>> a+b
(1, 2, 3, 5, 6, 7)
>>> c = (5,6,8)
>>> b+c
(5, 6, 7, 5, 6, 8)
>>>