python的列表操作总结

一,列表的基础操作:

1 empty = []
2 list1 = ['jimei','ruanjian','2021','37']
3 list1[1] = 100#修改元素
4 print(list1)
5 del list1[2]#删除元素
6 print(list1)
7 list1+=[100,110]#在原来列表的基础上再加上一个列表
8 list1.append(200)#在末尾添加元素

python的列表操作总结

 

python的列表操作总结

 

 

 这里还是比较简单没啥好说的基本操作

1 a = ['a','b','c']
2 n = [1,2,3]
3 x = [a,n]
4 a[0] = 1
5 print(x)
6 print(x[0])
7 print(x[0][1])

 python的列表操作总结

 

 这个x其实就是两个列表的合并,x[0]其实就是a,这个其实和c语言里二维数组访问是一样的。

 

1 b = a = [2,1]
2 a+=3
3 print(a,b)
4 a = a+[4,5]
5 print(a)
6 print(b)

 

一开始的赋值就是b和a指向同一个地方,在a的位置添加元素就是把这个位置的值改变,b也会跟着改变。如果用+=的话就不会发生改变了。

 

python的列表操作总结

 

 

除了加法之外列表肯定还存在乘法:

python的列表操作总结

 

注意一下,虽然表现形式乘了相应的倍数,但是还是每一个指针是同一个位置,一改全改。

1 a = [1,2,3,4]
2 b = a[1:3]  #从1到2
3 print (b)
4 b[0] = 100
5 print(b)
6 print(a)
7 print(a[::-1])#就相当于反过来打印,最后一个-1的意思是步长为-1
8 print([1,2,3,4,5,6][1:5:2])#从1到4步长为2
9 print(a[:])#就是从头到尾遍历

python的列表操作总结

python的列表操作总结

 

 二,列表的排序:

1 def selectsort(a):
2     n = n = len(a)
3     for i in range(n-1):
4         for j in range(i+1,n):
5             if  a[j]<a[i]:
6                 a[i],a[j] = a[j],a[i]
7 lst = [1,12,44,56,6,2]
8 selectsort(lst)
9 print(lst)

上面是py的选择排序,其实思路和之前的c语言是一样的只是表示形式不一样 。但是py提供了很多标准库中的排序函数供我们使用。

python的列表操作总结

 

 

1 a = [5,7,6,3,4,1,2]
2 a.sort()
3 print(a)
4 a = [5,7,6,3,4,1,2]
5 b = sorted(a)
6 print(a)
7 print(b)
8 a.sort(reverse = True) #对a从大到小排序
9 print(a)

python的列表操作总结

 

要解释的其实就是第八行了,这个涉及到后面自定义排序,这个reverse其实就有点像一个函数,这个函数的返回值是True的话就可以使sort进行反转。如果是元组或者是列表作为列表中的元素就是按照列表中元素排列的先后来进行排序。

 

自定义比较规则的排序常常是用于比较复杂。

1 def mykey(x):
2     return x%10
3 a = [25,7,16,33,41,1,2]
4 a.sort(key = mykey)
5 print(a)
6 b = sorted("This is a test string from Andrew".split(),key = str.lower)
7 print(b)

 

比如说上面的代码,我定义了一个函数会返回一个数的个位上的数,key的作用就是把a中的所有元素作为参数传入mykey中返回个位上的数,最后这个sort就是按照个位上的数的大小进行排序的了。b就是把这个字符串作为列表的形式储存(split的作用),然后不区分大小写排序(就是把所有元素全部转成小写了)。 

1 students = [('john','A',15),('Mike','B',12),('Mike','C',18)]
2 students.sort(key = lambda x: x[2])#按照年龄排序
3 students.sort(key = lambda x :x[0])#按照姓名排序

不同的关键字排序,会有不一样的排序效果。后面就是来说说上面用到的lambda表达式的作用。

python的列表操作总结

 

其实就是一个简单函数的写法咯,把4和5作为参数传进去之后返回冒号后面的值。

 python的列表操作总结

 

 

 这个就是自定义排序了。这个其实就是排序的选择先后问题。-x[2]的意思就是按照年龄来从大到小排。但是如果不是列表的话,是元组,使用sort的结果是列表。

python的列表操作总结

 

 三,映射map容器的使用(c++也有所使用)以及列表过滤。

map(function,sequence),可用于将一个序列映射到另一个序列

返回一个延时求值对象,可以转换成list,tuple(元组),set等等

下面来举一个例子:

1 def f(x):
2     print(x,end = "")
3     return x*x
4 a = map(f,[1,2,3])
5 print(list(a))
6 print(tuple(a))
7 a = list(map(lambda x:3*x,[2,3,4]))
8 print(a)

 

在我的理解里面,这个map说白了就是把后面的列表中的每一个元素作为参数传入f(x)中,最后返回的值储存起来赋给一个容器中(可以是列表,元组等),但是这个值并不是一种及时体现的,需要把这些值用一个容器装起来。

python的列表操作总结

 

 

map还能够用于输入,如下:

 

 

1 x,y,z = map(int,input().split())
2 print(x,y,z)

 

这个要稍微注意一下,int也是一个function,如int()可以把一个数据转成int型。后面就是把输入的x,y,z转成一个列表中的元素。

python的列表操作总结

 

 

 map还可以把多个序列映射到一个序列中,这个就是把各个序列的对应值全部加起来,然后放到x这个列表中去。

后面还有一个很酷的东西就是列表过滤。

python的列表操作总结

 

 

 

 

 

这个过滤的确很方便,不需要去遍历删除。后面举一个栗子:

1 def f(x):
2     return x%2 == 0
3 lst = tuple(filter(f,[1,2,3,4,5,6]))
4 print(lst)

 

四,列表生成式:

后面先给一堆例子理解一下:

python的列表操作总结

 

 

 后面一个个解释一下把,其实总结起来就是函数放在for循环的前面,在for循环的后面可以继续加上for循环或者是if的判断语句。这里补充一下isinstance函数是用来判断是不是某个类型的数的。

 

python的列表操作总结

 

 

 

六,二维列表:

 

 

python的列表操作总结

 

 

 

 其实和二维数组差不了太多的,但是可以看一下用列表生成式的二维列表生成

python的列表操作总结

 

 

这个和c语言还是有比较大差别的。毕竟这个里面的函数会更多。但是二维元组的定义会麻烦一点,需要在表达式前面加上tuple,但是也可以理解,毕竟如果只有一个括号的话就会太苍白了。

 

python的列表操作总结

 

 

 七,列表的拷贝:

python的列表操作总结

 

 

 如果只是这样进行拷贝的话只是浅层的拷贝,需要进行深层的拷贝的话要连着指针一起拷贝,如果这样拷贝的话,a与b其实还是指向同一个位置的,这样如果改变a的值,b的值也会发生改变。所以这里就要引入一个库——copy。

python的列表操作总结

 

 引入deepcopy这个函数就能连同指针一起打印。

八,列表转化:

python的列表操作总结

 

 

 

 

 

 

 呼~,写了一大堆累死了。py的内容的确很杂,但是还是很酷的哈哈哈!

 

上一篇:合并两个有序链表


下一篇:构建字典框架,用not in进行判断分类的思想