让我们假设以下简单的对象:
class Mock:
def __init__(self, name, age):
self.name = name
self.age = age
然后我有一个包含一些对象的列表,如下所示:
myList = [Mock("Dan", 34), Mock("Jack", 30), Mock("Oli", 23)...]
有没有一些内置的功能,我可以得到所有的Mock与一个年龄为ie 30?当然,我可以遍历它们并比较它们的年龄,但如下所示
find(myList, age=30)
那就好了。有没有类似的东西?
发布于 2012-06-02 07:39:22
发布于 2012-06-02 07:40:31
列表理解可以获取以下内容:
new_list = [x for x in myList if x.age == 30]
发布于 2012-06-02 08:50:52
列表理解几乎总是做这些事情的更快的方法(这里快2倍),尽管如前所述,如果你关心速度,索引甚至更快。
~$ python -mtimeit -s"from mock import myList" "filter(lambda x: x.age==21, myList)"
1000000 loops, best of 3: 1.34 usec per loop
~$ python -mtimeit -s"from mock import myList" "[x for x in myList if x.age==21]"
1000000 loops, best of 3: 0.63 usec per loop
对于当前目录中的文件mock.py
:
class Mock:
def __init__(self, name, age):
self.name = name
self.age = age
myList = [Mock('Tom', 20), Mock('Dick', 21), Mock('Harry', 21), Mock('John', 22)]
https://stackoverflow.com/questions/10858575
复制相似问题