python拾遗系列:python下list类型的过滤

1. 涉及到的函数

filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,第一个为函数,第二个为序列

2. 问题转换

从sql的角度理解,就是进行where查询。

select * from orders where id={} limit 1;

3. 声明类

from datetime import datetime
class Order(object):
    id:int
    price: float
    volume: float
    orderTime: float
    def __init__(self, id, price, volume):
        self.id = id
        self.price = price
        self.volue = volume
        self.orderTime = datetime.today().timestamp()
    

4.造数据

from time import sleep
order1 = Order(1, 10., 100.)
sleep(0.5)
order2 = Order(2, 10, 50.)
order3 = Order(3, 11., 100.)
orders = [order1, order2, order3]

5. 过滤-返回只有一条记录

比如:查询id=2的单子

filter(lambda o: o.id == 2, orders)

order = next(filter(lambda o: o.id == 2, orders))
print(order.__dict__)
{'id': 2, 'price': 10, 'volue': 50.0, 'orderTime': 1586518831.830308}

6.过滤——返回多条记录

比如:返回price = 10的单子

filter_orders = list(filter(lambda o: o.price == 10., orders))
for order in filter_orders:
    print(order.__dict__)
{'id': 1, 'price': 10.0, 'volue': 100.0, 'orderTime': 1586518831.329963}
{'id': 2, 'price': 10, 'volue': 50.0, 'orderTime': 1586518831.830308}

你可能感兴趣的:(python拾遗系列:python下list类型的过滤)