在 Python 个列表中计算 class 个实例
Count class instances in a Python list
我想知道计算特定对象出现次数的最佳和最快方法是什么(用户定义的class实例)在 Python 列表中?
例如,如果我们有一个名为 MyClass
的 class
class MyClass:
"""A simple example class"""
i = 42
def foo(self):
return “Hello world”
和一个列表myList
,由六个元素组成:
myList = [MyClass(), MyClass(), 2, 3, 'egg', MyClass()]
我们可以计算对象出现的次数,这是一个MyClass
实例通过迭代myList
并使用isinstance()
函数:
count = 0
for item in myList:
if isinstance(item, MyClass):
count += 1
但是有没有更好的或更pythonic的方法来做到这一点?
您可以使用 sum
进行这种计数,因为 True
等于一而 False
等于零:
count = sum(isinstance(x, MyClass) for x in myList)
听起来你要的是 filter
:
count = len( filter(lambda i: isinstance(i, myClass), myList))
我想知道计算特定对象出现次数的最佳和最快方法是什么(用户定义的class实例)在 Python 列表中?
例如,如果我们有一个名为 MyClass
class MyClass:
"""A simple example class"""
i = 42
def foo(self):
return “Hello world”
和一个列表myList
,由六个元素组成:
myList = [MyClass(), MyClass(), 2, 3, 'egg', MyClass()]
我们可以计算对象出现的次数,这是一个MyClass
实例通过迭代myList
并使用isinstance()
函数:
count = 0
for item in myList:
if isinstance(item, MyClass):
count += 1
但是有没有更好的或更pythonic的方法来做到这一点?
您可以使用 sum
进行这种计数,因为 True
等于一而 False
等于零:
count = sum(isinstance(x, MyClass) for x in myList)
听起来你要的是 filter
:
count = len( filter(lambda i: isinstance(i, myClass), myList))