分享工作中遇到的python知识点,估计很多人没太留意过这个知识点,但是对巩固很多基本语法和一些python中一些有用的方法很有帮助,工作中的问题我简化说下,大概就是下面需求:
有3个python列表:分别是年龄,姓名,城市
a = [ 24 , 37,18, 45, 60]
b = ["张三" , "李四" ,"王五" ,"赵六" ," 孙七" ]
c = ["北京" , "上海" , "武汉" , "深圳" , "南京"]
a, b,c三个列表中的数据根据下标具有一一对应关系,现在要求排序,根据a列表中的数值从小到大排序,然后b和c列表中的元素根据a列表的排序也重新排下
也就是最终要的排序结果为:
a = [ 18,24,37,45,60]
b = ["王五" , "张三" ,"李四" ,"赵六" ," 孙七" ]
c = ["武汉" , "北京","上海","深圳","南京"]
记住一句话,学python一定要用最简单的python方法去写代码
下面我给大家分享我的做法:
1、用zip函数,将三个列表合并成一个大列表(默认是对象),然后大列表的每个元素为元组,元组的三个值就是a , b, c中对应下标的各个元素
2、我们构造成大列表的目的是将三个列表给统一到一个数据中,这样我们可以用sorted函数进行排序,排序根据x[0]年龄排,如果是x[1]就是根据姓名排,如果是x[2]就是根据城市排
3、根据列表推导式将元素取出来,得出排序后的3个列表,与需求一致
4、补充,如果想从大到小排序,加reverse = True参数,表示反转,默认是从小到大排序
5、zip函数是什么鬼?
zip函数可以将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,这里估计有人会问,那zip函数是相当于打包,有没有那种类似unzip解包那种方法,我查阅文档,暂未发现该方法,所以用了列表推导式将排序后的3个列表取出来
6、sort和sorted我都见过,有什么区别?
简单记住:
sort : 无返回值,在原有列表基础上进行修改
sorted:有返回值,得出新排序后的列表
比如下方是用sort时候的截图,在原有基础上进行排序,可以和sorted进行对比
顺便提下,这些知识点其实在以前110道面试题中已经提及,有兴趣可以将这些面试题做下,巩固下,相信会有不少收获
下方是之前的面试题,这些方法以前详细讲过