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正常时间和unix时间戳相互转换的方法
Apr 23 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
python获取当前目录路径和上级路径的实例
Apr 26 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
Django--权限Permissions的例子
Aug 28 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
python基于opencv 实现图像时钟
Jan 04 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
Pytorch中的数据集划分&正则化方法
May 27 Python
Python OpenGL基本配置方式
May 20 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容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
vue.js实现标签页切换效果
2018/06/07 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
TensorFlow Session会话控制&amp;Variable变量详解
2018/07/30 Python
详解Python time库的使用
2019/10/10 Python
Python数据存储之 h5py详解
2019/12/26 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
python 通过exifread读取照片信息
2020/12/24 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
办公室文员自荐书
2014/02/03 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
学习经验交流会主持词
2014/04/01 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
教师读书活动心得体会
2016/01/14 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python