为什么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相关推荐

  1. Python中的字典该怎么用,看这一篇就够了(结尾有惊喜)

    目录 1.基本概念 2.常用操作 (1)使用字典 1.基本形式 2.访问字典中的值 3.添加(或创建)键值对 4.修改字典中的值 5.删除键值对 (2)遍历字典 1.遍历字典中所有的键值对 2.遍历字 ...

  2. 如何优雅的在python中暂停死循环?

    死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...

  3. 关于python中的dict和defaultdict

    dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...

  4. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  5. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. 逗号分隔的字符串转换为Python中的列表 split

    将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...

  8. [翻译]Python中yield的解释

    问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...

  9. 全面理解Python中的类型提示(Type Hints)

    众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...

最新文章

  1. MVC中实现多按钮提交(转)
  2. MySQL 索引条件下推 Index Condition Pushdown
  3. 子数组最大值设计02
  4. Fedora 31 正式版今天发布,Python不是传说的3.8,而是3.7.4
  5. 【Redis】2、CentOS 7 上安装 redis3.2.3安装与配置
  6. ARIA and the value of challenge-led innovation
  7. ASP.NET设置数据格式与String.Format和DataFormatString使用总结
  8. 看完就懂webpack打包原理
  9. UVA494 Kindergarten Counting Game【输入输出+水题】
  10. java.lang math 类
  11. 使用 RMI + ZooKeeper 实现远程调用
  12. Python 符号运算
  13. 苹果系统中国日历服务器,简单三步,让 iPhone 自带日历 App 显示国家节假日安排...
  14. 啊哈添柴挑战1057向世界问好C++
  15. 痛失PC霸主的联想,刘军将迎来艰难之战
  16. 如果一只股票退市,那么里面所持有这只股票人的钱该怎么办?
  17. 报头压缩-ROHC压缩系统
  18. 智能指针(一)—— 智能指针的底层原理(RAII特性)
  19. webStrom 和 eclipse项目已经重启报端口冲突解决
  20. python 使用plt画图,去除图片四周的白边

热门文章

  1. android 对讲机 服务器,对讲机功能与Android 4.0系统_手机_手机Android频道-中关村在线...
  2. 工厂人员定位系统概述
  3. 1.0E-08=0.000000001
  4. 全球及中国太阳能发电站行业建设战略及投资机会分析报告2021-2027年
  5. Revit二次开发---墙体开洞
  6. 定时循环调用FastCopy自动备份脚本
  7. 负荷预测(BP神经网络)
  8. C++ pair的用法
  9. Mobileye的2022「答卷」
  10. 网络协议和Netty——第一章 网络协议笔记