前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【项目实战】自监控-03-列表排序

【项目实战】自监控-03-列表排序

作者头像
zishendianxia
发布2019-10-23 17:15:29
3240
发布2019-10-23 17:15:29
举报
文章被收录于专栏:Python工程师

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2

  • 这个系列主要是实际在做项目的一个笔记
  • 自监控项目,主要是对采集的质量监控数据做的一个实时预警
  • 今天讲讲列表的排序sort

今日歌曲:

Part 1:问题概述

  1. 当我们使用os.listdir(path)获取文件夹下文件时,会得到一个按照特定顺序排列的文件名列表
  2. 因要求按照某一特定(非默认)顺序依次处理这些文件,特定条件为每个文件内部自带的时间信息
  3. 所以问题是:结合每个文件自带的时间信息,如何对这些文件名进行重新排序
  4. 假设已经获取每个文件对应的时间,每个文件信息由一个元组来表示,即:(文件名,时间信息)
  5. 在本示例中时间表示为datetime.datetime(year=2017, month=7, day=6,hour=11, minute=12, second=30)

Part 2:代码

代码语言:javascript
复制
import datetimex1 = datetime.datetime(year=2017, month=7, day=6,
                      hour=11, minute=12, second=30)
x2 = datetime.datetime(year=2017, month=7, day=6,
                      hour=15, minute=12, second=30)
x3 = datetime.datetime(year=2017, month=8, day=6,
                      hour=15, minute=12, second=30)
x4 = datetime.datetime(year=2016, month=8, day=6,
                      hour=15, minute=12, second=30)file_sort = [("1.txt", x1), ("2.txt", x2), ("3.txt", x3), ("4.txt", x4)]
print("排序前", file_sort, "\n")file_sort.sort(key=lambda x: x[1])
print("排序后:", file_sort)file_new = [x[0] for x in file_sort]
print("file_new=", file_new)

代码截图

Part 3:部分代码解读

  1. file_sort.sort(key=lambda x: x[1])使用了列表的排序
    • key定义参与排序的关键字,本文参与排序的是datetime
    • sort另外还有一个参数reverse,取值为True则降序排列
  2. lambda x: x[1]是一种匿名函数,格式为:lambda 参数:表达式1 if 条件 else 表达式2
    • 其中后面的判断语句可以没有
    • 若有判断语句,if 条件成立,则函数返回表达式1,否则返回表达式2
    • 示例可以见下图
  3. file_new = [x[0] for x in file_sort]列表推导式,取列表中每个元组的第一个数据,可参考:【项目实战】自监控-02-os

lambda代码示例


以上为本次的学习内容,下回见

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part 1:问题概述
  • Part 2:代码
  • Part 3:部分代码解读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档