python中的linq - asq
为什么80%的码农都做不了架构师?>>>
大家都知道C#中的Linq很方便, 但Python中也有"Linq", 那就是asq
示例:
#coding: utf-8from asq.initiators import query import randomclass Model(object):def __init__(self):passlists = [] for x in range(10):model = Model()model.id = xmodel.age = random.randint(18, 30)model.name = 'A{0}'.format(x)lists.append(model)#lists = query(lists).where(lambda x : x.age > 20) lists = query(lists).order_by(lambda x : x.age) lists = query(lists).select(lambda x : { 'id':x.id,'age':x.age, 'name':x.name }) lists = query(lists).to_list()print len(lists) print 'ID\tAge\tName' for x in lists:print '{0}\t{1}\t{2}'.format(x['id'], x['age'], x['name'])
class asq.queryables.Queryable(iterable)
在可迭代对象的查询是串行执行的.
queryable对象由可迭代对象创建.
Queryable .__contains__ 相同于操作符'in'的成员检测. Queryable.__enter__ 支持上下文管理协议. Queryable.__eq__ 判断前后两个迭代对象是否相等. Queryable.__exit__ 支持上下文管理协议. Queryable.__getitem__ 使用序列方括号中的索引获取item. Queryable.__init__ 从某可迭代对象中构建queryable对象. Queryable.__iter__ 支持迭代器协议. Queryable.__ne__ 判断前后两个可迭代对象是否不相等. Queryable.__reversed__ 使用内建函数reversed()来翻转序列. Queryable.__repr__ 返回queryable对象对应的字符串表示. Queryable.__str__ 返回queryable对象对应的字符串表示. Queryable.aggregate 将一个序列聚合为某种结果. Queryable.all 判断源序列中是否其所有成员都满足某个条件. Queryable.any 判断源序列中是否有成员满足某个条件. Queryable.as_parallel 返回查询后一个用于并行执行的ParallelQueryable对象. Queryable.average 返回序列中值的算术平均值.. Queryable.close 关闭queryable对象. Queryable.closed 判断queryable对象是否关闭. Queryable.concat 拼接两个序列. Queryable.contains 判断该序列是否包含某个指定值. Queryable.count 返回成员的数量(或满足某种断言). Queryable.default_if_empty 如果源序列为空,则返回包含了默认值的单元素序列;否则则返回该序列. Queryable.difference 对比两个源序列,返回存在前一个序列但不在于后一个序列的所有元素. Queryable.distinct 对序列元素进行去重. Queryable.element_at 返回指定index下的元素. Queryable.first 返回序列的第一个元素((或满足某种断言). Queryable.first_or_default 返回序列的第一个元素((或满足某种断言)或一个默认值. Queryable.group_by 按某个键值,对某个选择器提取的元素进行分组. Queryable.group_join 通过keys匹配两个序列的元素,并且对结果集进行分组. Queryable.intersect 返回两个源序列的交集. Queryable.join 通过选出的keys对两个序列执行内联接. Queryable.last 返回序列的最后一个元素(或满足某种断言). Queryable.last_or_default 返回序列的最后一个元素((或满足某种断言)或一个默认值. Queryable.log 通过logger将查询过程及结果信息记录到日志. Queryable.max 返回序列元素的最大值. Queryable.min 返回序列元素的最小值. Queryable.of_type 按某指定的类型来过滤元素 Queryable.order_by 按某个key进行升序排序. Queryable.order_by_descending 按某个key按降序排序. Queryable.select 序列中的每个元素映射到新的序列. Queryable.select_many 序列中的每个元素映射到中间的新的序列,并将结果序列合并为一个序列;再通过selector工厂方法,对合并后的序列进行转换. Queryable.select_many_with_correspondence 序列中的每个元素映射到中间的新的序列,并将结果序列合并为一个序列;再通过selector工厂方法 ,将合并后的序列中的每个item按对应的源来进行合并. Queryable.select_many_with_index 序列中的每个元素映射到中间的新的序列,并将结果序列合并为一个序列;再通过selector工厂方法 ,将合并后的序列的每个元素与元素对应的index进行合并. Queryable.select_with_index 序列中的每个元素映射到新的序列,并将每个元素与元素对应的index合并. Queryable.sequence_equal 通过对比序列中的元素,判断某条件下两个序列是否相等. Queryable.single 返回唯一的元素(满足某种条件). Queryable.single_or_default 返回唯一元素(满足某种条件)或默认元素. Queryable.skip 序列中跳过前n个相邻的元素,返回余下的元素. Queryable.skip_while 从序列头部开始,忽略第一次满足某种条件的相邻连续的元素,并返回余下的元素. Queryable.sum 返回序列元素的算术和. Queryable.take 返回序列的前n个元素. Queryable.take_while 返回序列的第一次满足某种条件的相邻连续的元素. Queryable.to_dictionary 通过源序列创建字典. Queryable.to_list 序列化源序列为list类型. Queryable.to_lookup 使用selector为序列中每个item生成一个key,并返回一个可查找的对象 Queryable.to_set 源序列转换为集合set. Queryable.to_str 字符串化源序列. Queryable.to_tuple 源序列转换为元组. Queryable.union 返回两个序列元素的并集. Queryable.where where条件过滤. Queryable.zip 某种规则的两个序列的元素组合.
转载于:https://my.oschina.net/yehun/blog/870914
python中的linq - asq相关推荐
- Python中的字典该怎么用,看这一篇就够了(结尾有惊喜)
目录 1.基本概念 2.常用操作 (1)使用字典 1.基本形式 2.访问字典中的值 3.添加(或创建)键值对 4.修改字典中的值 5.删除键值对 (2)遍历字典 1.遍历字典中所有的键值对 2.遍历字 ...
- 如何优雅的在python中暂停死循环?
死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...
- 关于python中的dict和defaultdict
dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...
- python中的新式类与旧式类的一些基于descriptor的概念(上)
python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- 逗号分隔的字符串转换为Python中的列表 split
将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...
- [翻译]Python中yield的解释
问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
最新文章
- MVC中实现多按钮提交(转)
- MySQL 索引条件下推 Index Condition Pushdown
- 子数组最大值设计02
- Fedora 31 正式版今天发布,Python不是传说的3.8,而是3.7.4
- 【Redis】2、CentOS 7 上安装 redis3.2.3安装与配置
- ARIA and the value of challenge-led innovation
- ASP.NET设置数据格式与String.Format和DataFormatString使用总结
- 看完就懂webpack打包原理
- UVA494 Kindergarten Counting Game【输入输出+水题】
- java.lang math 类
- 使用 RMI + ZooKeeper 实现远程调用
- Python 符号运算
- 苹果系统中国日历服务器,简单三步,让 iPhone 自带日历 App 显示国家节假日安排...
- 啊哈添柴挑战1057向世界问好C++
- 痛失PC霸主的联想,刘军将迎来艰难之战
- 如果一只股票退市,那么里面所持有这只股票人的钱该怎么办?
- 报头压缩-ROHC压缩系统
- 智能指针(一)—— 智能指针的底层原理(RAII特性)
- webStrom 和 eclipse项目已经重启报端口冲突解决
- python 使用plt画图,去除图片四周的白边
热门文章
- android 对讲机 服务器,对讲机功能与Android 4.0系统_手机_手机Android频道-中关村在线...
- 工厂人员定位系统概述
- 1.0E-08=0.000000001
- 全球及中国太阳能发电站行业建设战略及投资机会分析报告2021-2027年
- Revit二次开发---墙体开洞
- 定时循环调用FastCopy自动备份脚本
- 负荷预测(BP神经网络)
- C++ pair的用法
- Mobileye的2022「答卷」
- 网络协议和Netty——第一章 网络协议笔记