1. 程式人生 > python教程 > python中的"linq"

python中的"linq"

大家都知道C#中的Linq很方便, 但Python中也有"Linq", 那就是asq 示例:


#coding: utf-8
from asq.initiators import query
import random
class Model(object):
def __init__(self):
pass
lists = []
for x in range(10):
model = Model()
model.id = x
model.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 某種規則的兩個序列的元素組合.