List和Tuple区别
python中list是可变数据,创建以后是可以对数据进行写操作的,但是tuple元组是不可变的,只能进行读的操作
list和tuple 通过 list()
和tuple()
可以互相转换
list
1 | a = [3,2,1] # a就是一个list |
append()
用于向已经存在的list增加一个元素1
2
3
4a = [1,2,3]
a.append(4)
print(a)
[1,2,3,4]
clear()
用于清空list中的所有元素,这个方法在python2中是没用的1
2
3
4a = [1,2,3]
a.clear()
print(a)
[]
count()
用于计算list中某个元素的出现次数,如果count()一个不存在的元素结果为01
2
3
4
5a = [1,2,3,3]
a.count(3)
2
a.count(4)
0
extend()
用于向一个list增加另外一个list,不是简单的2个list相加1
2
3
4
5
6
7
8
9
10a = [1,2,3,4]
b = [4,3,2,1]
a.extend(b) # 这是相当于 a = a + b,b不会被改变,改变的只有a且不会有返回结果的,在a的元素后面按照b的元素顺序添加
print(a)
[1,2,3,4,4,3,2,1]
print(b)
[4,3,2,1] # b没有改变
c = a.extend(b) # extend是a的方法,并没有任何返回值,只对a进行了操作,故c得不到任何数据为None
print(c)
None
index()
用于得到某个元素在list中的位置,下标(从左开始第一位是0),如果有重复的元素,从左开始找,一旦找到就返回,不会继续1
2
3
4
5a = [4,2,3,4]
a.index(3)
2
a.index(4)
0
insert()
用于向list中的x位置插入y,x就是索引编号从0开始,y就是新的元素,如果x大于等于list本身的长度,则在最后插入,相当于append(),否则就会x位以后的数据顺移一位1
2
3
4
5
6
7
8a = [1,2,3]
a.insert(0,'y') #在0位置上插入y,那么原来的1,2,3顺移
print(a)
['y',1,2,3]
a.insert[9,y] #在9位置插入y,由于现在a只有4个数字,这个操作就相当于在最后增加一个y
print(a)
['y',1,2,3,'y']
pop()
用于取出返回list最后一个元素,且删除,就等于拿一个删一个,如果空了,再pop就会抛异常,和redis中的list的pop一样1
2
3
4
5
6
7
8
9
10
11
12
13a = [1,2,3]
a.pop()
3
a.pop()
2
a.pop()
1
a.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
print(a)
[]
remove()
用于删除list某元素,如果该元素不存在,就抛异常,如果某元素有多个,rmove只是从左开始,一遇到就删除,不会对其余的进行操作,remove是不返回值的1
2
3
4
5
6
7
8a = [1,2,3,1]
a.remove(1)
print(a)
[2,3,1]
a.remove(9)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
reverse()
把list进行倒序操作,这个倒序不是说把里面的数据进行倒序排列,这个倒序是对位置来说的1
2
3
4a = [1,2,3,4,'x',4,5,'y','a']
a.reverse() # 并不是把里面的1,2,3,4,'x',4,5,'y','a' 进行倒序排列,而是他们的位置,原来在最后一个位置的元素现在变成第一个,依次列推
print(a)
['a', 'y', 5, 4, 'x', 4, 3, 2, 1]
sort()
list.sort()有这个方法,另外python内建还有一个sorted()方法,这2个最大的区别是
list.sort()只是对list中的数据进行了排序,是不返回值
而sorted(list)是把list中的数据拿出进行排序,返回新的list对象,是有返回值的,不会改变原来的list
list.sort(func=None, key=None, reverse=False) 默认是顺序排列
值得注意的是,由于是对list重的元素本身进行排序,且元素的类型必须一致,否则就会报错,也就说如果一个list 的元素既有数字又有字符串无论使用内置的sort还是python内置的方法sorted都会报错,reverse=False:是顺序排列1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21‘’‘
和sorted()区别
’‘’
a = [1,2,3]
print(a.sort())
None
print(a)
[1, 2, 3]
print(sorted(a))
[1, 2, 3]
‘’‘
对于某个key排序
’‘’
L = [('b',2),('a',1),('c',3),('d',4)]
sorted(L,key=lambda x:x[0])
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
L = [('b',2),('a',1),('c',3),('d',4)]
L.sort(key=lambda x:x[0])
print(L)
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]