python中的列表和元组

List和Tuple区别

python中list是可变数据,创建以后是可以对数据进行写操作的,但是tuple元组是不可变的,只能进行读的操作
list和tuple 通过 list()tuple() 可以互相转换

list
1
2
3
a = [3,2,1]   # a就是一个list
print(dir(a)) # 通过dir()
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
append()

用于向已经存在的list增加一个元素

1
2
3
4
a = [1,2,3]
a.append(4)
print(a)
[1,2,3,4]

clear()

用于清空list中的所有元素,这个方法在python2中是没用的

1
2
3
4
a = [1,2,3]
a.clear()
print(a)
[]

count()

用于计算list中某个元素的出现次数,如果count()一个不存在的元素结果为0

1
2
3
4
5
a = [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
10
a = [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
5
a = [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
8
a = [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
13
a = [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
8
a = [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
4
a = [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)]

文章目录
  1. 1. List和Tuple区别
    1. 1.1. list
      1. 1.1.1. append()
      2. 1.1.2. clear()
      3. 1.1.3. count()
      4. 1.1.4. extend()
      5. 1.1.5. index()
      6. 1.1.6. insert()
      7. 1.1.7. pop()
      8. 1.1.8. remove()
      9. 1.1.9. reverse()
      10. 1.1.10. sort()