python sorted函数的小练习及解答


Posted in Python onSeptember 18, 2019

前两天学习了一下socket编程,在向某大神请教问题时被嫌弃了,有一种还没学会走就想跑的感觉。大神说我现在的水平应该去做一些像是操作文件、序列号等的小练习来加深理解。下面是他给我出的小练习:

1、datas = [['sherry',19,'female'],['flora',21,'female'],['june',15,'femal']],分别根据名字首字母和年龄进行排序输出;

2、按照给定的输出方式进行输出比较结果,对Person类进行补充;

class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']}
class Person(object):
def __init__(self,name,age):

self.name = name
p1 = Person('sherry',20)
p2 = Person('june',20)
if p1<p2:
print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
else:
print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))

就这么简单我竟做了一下午(打脸)

题目

def get_first(info):
   first_value = info[0][0]
   return first_value
 na = sorted(datas,key=get_first)
 print(na)

 def age_sort(info):
   return info[1]
 print(sorted(datas,key=age_sort))

答案

class_mates = {'sherry':[18,'male'],'june':[20,'female'],'flora':[19,'female'],'alina':[21,'male']}
class Person(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def __lt__(self,others):
    if(self.age<others.age):
      return 1
    elif(self.age==others.age): 
      if(self.name[0]<others.name[0]):
        return 1
      else:
        return 0
    return 0
p1 = Person('sherry',20)
p2 = Person('june',20)
if p1<p2:
  print('p1:{} less than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))
else:
  print('p1:{} gte than p2:{}'.format([p1.name,p1.age],[p2.name,p2.age]))

查看python官方文档,总结一下get到的知识。

1、sorted(iterable[, key][, reverse])

返回一个重新排序的list,有两个可选的关键字参数(使用参数名而不是位置来指定参数)。

key 定义了一个带参数的函数,提取list的某个元素作为这个函数的参数,返回值作为你叫关键字,默认值是None(直接比较list的元素)

reverse是一个布尔值。True表示将list里面的元素反向排序。

2、ln(a,b),当使用a<b的我时候,会自动调用__ln__(a,b)这个函数,因此我们要在类中重新定义__ln(a,b)__函数,自己定义什么时候返回true什么时候返回false。每一种类型都有自己的ln()函数,所以在重新定义的时候里面也可以调用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的time模块中的常用方法整理
Jun 18 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
Python3实现腾讯云OCR识别
Nov 27 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
python实现抖音点赞功能
Apr 07 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Python Lambda函数使用总结详解
Dec 11 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
为什么是 Python -m
Jun 19 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
python 默认参数相关知识详解
Sep 18 #Python
python连接PostgreSQL数据库的过程详解
Sep 18 #Python
Python传递参数的多种方式(小结)
Sep 18 #Python
余弦相似性计算及python代码实现过程解析
Sep 18 #Python
python之yield和Generator深入解析
Sep 18 #Python
PyTorch预训练的实现
Sep 18 #Python
用python实现英文字母和相应序数转换的方法
Sep 18 #Python
You might like
PHP获取表单textarea数据中的换行问题
2010/09/10 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python列表计数及插入实例
2014/12/17 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
客户代表自我评价范例
2013/09/24 职场文书
汽修专业学生自我鉴定
2013/11/16 职场文书
会计辞职信范文
2014/01/15 职场文书
仓管岗位职责范本
2014/02/08 职场文书
陈欧广告词
2014/03/14 职场文书
党员一句话承诺大全
2014/03/28 职场文书
人事任命书范文
2014/06/04 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android