operator笔记
# operator.itemgetter(*items) # 获取item
>>> from operator import itemgetter
# list使用下标进行返回
>>> a
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> itemgetter(1)(a) # 获取a中下标为1的元组
('b', 2)
>>> itemgetter(1,3)(a) # 同时获取多个元组
(('b', 2), ('d', 4))
# dict使用键来返回
>>> a = {'one': 1, 'two':2, 'three':3}
>>> itemgetter('one')(a)
1
>>> itemgetter('one', 'two')(a)
(1, 2)
# 使用attrgetter()获取其属性
# 《python cookbook》 书籍的例子
from operator import attrgetter
class User(object):
def __init__(self, uid):
self.uid = uid
def __repr__(self):
return 'User({})'.format(self.uid)
users = [User(25), User(14), User(100)]
print(sorted(users, key=attrgetter('uid')))
"""
D:\笔记\python电子书\Python3>python index.py
[User(14), User(25), User(100)]
"""
# 使用attrgetter可以使用lambda来进行代替:
class User(object):
def __init__(self, uid):
self.uid = uid
def __repr__(self):
return 'User({})'.format(self.uid)
users = [User(25), User(14), User(100)]
print(sorted(users, key=lambda u: u.uid))
"""
D:\笔记\python电子书\Python3>python index.py
[User(14), User(25), User(100)]
"""
《python cookbook》书籍中提到attrgetter()的速度相对来说比lambda快一些,具体可使用pytest进行测试,这里不做详细测试
operator笔记的更多相关文章
- EC笔记:第二部分:11:在operator=中处理“自我赋值”
已经一年半没有写过博客了,最近发现学过的知识还是需要整理一下,为知笔记,要开始收费了以前写在为知笔记上笔记也会慢慢的转到博客里. 话不多说,进入正题. 考虑考虑以下场景: 当某个对象对自身赋值时,会出 ...
- 面向对象程序设计-C++ Default constructor & Copy constructor& Destructor & Operator Overloading【第九次上课笔记】
先上笔记内容吧: 这次上课的内容有关 构造函数 析构函数 运算符重载 return * this 内容很细,大家好好回顾笔记再照应程序复习吧 :) #include <iostream> ...
- Python标准库笔记(11) — Operator模块
Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...
- 重载操作符 operator overloading 学习笔记
重载操作符,只是另外一种调用函数的方法和表现方式,在某些情况它可以让代码更简单易读.注意不要过度使用重载操作符,除非它让你的类更简单,让你的代码更易读. 1语法 如下: 其中友元,关键字不是必须的,但 ...
- EC读书笔记系列之6:条款11 在operator=中处理自我赋值
记住: ★确保当对象自我赋值时operator=有良好行为.有三种方法:比较“来源对象”和“目标对象”的地址.精心周到的语句顺序.以及copy-and-swap技术 ★确定任何函数若操作一个以上对象, ...
- 面向对象程序设计-C++ Operator Overloading & Type conversion (Static)【第十一次上课笔记】
本次上课继续讲解了 [ ] .-> 等运算符重载的具体例子 也讲解了C++单个参数的类的类型转换的案例 最后稍微提到了 static 的第三种作用:静态数据成员 具体详解我都已注释出来了,大家可 ...
- Effective C++_笔记_条款11_在operator=中处理“自我赋值”
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 为什么会出现自我赋值呢?不明显的自我赋值,是“别名”带来的结果: ...
- 读书笔记 effective c++ Item 11 在operator=中处理自我赋值
1.自我赋值是如何发生的 当一个对象委派给自己的时候,自我赋值就会发生: class Widget { ... }; Widget w; ... w = w; // assignment to sel ...
- Flink笔记(二) DataStream Operator(数据流操作)
DataStream Source 基于文件 readTextFile(path) 读取 text 文件的数据 readFile(fileInputFormat, path) 通过自定义的读取方式, ...
随机推荐
- shell开源跳板机sshstack
笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 源码地址: https://github.com/sshstack/sshstack 为什么要写shell跳板机? ...
- css 实现省略号. text-overflow: ellipsis; 同时设置四个属性才可以.
这个同时需要. text-overflow ; overflow ; white-space ; width ; 四个属性才可以. <!DOCTYPE html> <htm ...
- python之pandas简单介绍及使用(一)
python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...
- Centos7虚拟机下配置静态IP
以下为Centos7在VMware下配置静态IP地址,配置完后内外网都可以访问,主机与虚拟机之间可以通信. 1.在VMware里,菜单栏点击[编辑]-->[虚拟网络编辑器],如下图.选择的是NA ...
- 【Python】多线程-3
#练习:线程等待 Event e.set() e.wait() from threading import Thread, Lock import threading import time ...
- POJ2777-Count Color (线段树)
题目传送门:http://poj.org/problem?id=2777 Count Color Time Limit: 1000MS Memory Limit: 65536K Total Sub ...
- SpringBatch Sample (五)(复合格式文件的读、多文件的写)
前面关于Spring Batch的文章,讲述了SpringBatch对CSV文件的读写操作.对XML文件的操作,以及对固定长格式文件的操作.这些事例,同一个Reader读取的都是相同格式的数据,最终写 ...
- 查询表Or列的注释信息
需求:开发人员需要DBA支持,查询表的注释说明,用于明确表的用途. 1.测试 session 1 创建测试表SQL> create table a_emp as select * from sc ...
- Django之模板层-自定义过滤器以及标签
自定义标签与过滤器 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 在app中创建templatetags模块(模块名只能是t ...
- Python之路,第四篇:Python入门与基础4
Python3 字符串 字符串是一个有序的字符序列 如何表示一个字符串: 在非注释中凡是用引号括起来的部分都是字符串: ‘ 单引号 ” 双引号 ‘’‘ 三单引号 “”“ ...