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下的常用下载安装工具pip的安装方法
Nov 13 Python
分享一个简单的python读写文件脚本
Nov 25 Python
python实现神经网络感知器算法
Dec 20 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
python实现翻转棋游戏(othello)
Jul 29 Python
Python单元测试工具doctest和unittest使用解析
Sep 02 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
Mar 06 Python
Python如何输出警告信息
Jul 30 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
5.PHP的其他功能
2006/10/09 PHP
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
Chrome Web App开发小结
2014/09/04 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
Python守护线程用法实例
2017/06/23 Python
python flask实现分页的示例代码
2018/08/02 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
深入解析神经网络从原理到实现
2019/07/26 Python
Python tkinter常用操作代码实例
2020/01/03 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
业务内勤岗位职责
2014/04/30 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
python ansible自动化运维工具执行流程
2021/06/24 Python
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers