Python - 实例变量列表的最小值

发布于 2024-09-17 12:35:21 字数 571 浏览 9 评论 0原文

我是 Python 新手,我真的很喜欢 min 函数。

>>>min([1,3,15])
0

但是,如果我有一个实例列表,并且它们都有一个名为 number 的变量,该怎么办?

class Instance():
    def __init__(self, number):
        self.number = number

i1 = Instance(1)
i2 = Instance(3)
i3 = Instance(15)
iList = [i1,i2,i3]

我真的需要像

lowestI = iList[0].number
for i in iList:
    if lowestI > iList[i].number: lowestI = iList[i].number
print lowestI

Can't I use min in a beautiful pythonic way 那样吗?

I'm new to Python and I really love the min function.

>>>min([1,3,15])
0

But what if I have a list of instances, and they all have a variable named number?

class Instance():
    def __init__(self, number):
        self.number = number

i1 = Instance(1)
i2 = Instance(3)
i3 = Instance(15)
iList = [i1,i2,i3]

Do I really have to something like

lowestI = iList[0].number
for i in iList:
    if lowestI > iList[i].number: lowestI = iList[i].number
print lowestI

Can't I use min in a nice pythonic way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

‘画卷フ 2024-09-24 12:35:22
min(iList, key=lambda inst: inst.number)
min(iList, key=lambda inst: inst.number)
山川志 2024-09-24 12:35:21

OOP 方法是实现 __lt__

class Instance():
    def __init__(self, number):
        self.number = number

    def __lt__(self, other):
        return self.number < other.number
        # now min(iList) just works

另一种方法是

imin = min(iList, key=lambda x:x.number)

sort、min、 max 全部采用 key 参数。您给出一个函数,该函数接受一个项目并在比较时返回代表该项目的任何内容。

The OOP way would be to implement __lt__:

class Instance():
    def __init__(self, number):
        self.number = number

    def __lt__(self, other):
        return self.number < other.number
        # now min(iList) just works

Another way is

imin = min(iList, key=lambda x:x.number)

Functions like sort, min, max all take a key argument. You give a function that takes an item and returns whatever should stand for this item when comparing it.

独木成林 2024-09-24 12:35:21
from operator import attrgetter
min( iList, key = attrgetter( "number" ) )

相同的 key 参数也适用于 sort,用于以 Python 方式实现decorate-sort-undecorate 习惯用法。

from operator import attrgetter
min( iList, key = attrgetter( "number" ) )

The same key argument also works with sort, for implementing the decorate-sort-undecorate idiom Pythonically.

百变从容 2024-09-24 12:35:21

生成器语法:

min(i.number for i in iList)

key 功能:

min(iList, key=lambda i: i.number)

Generator syntax:

min(i.number for i in iList)

key function:

min(iList, key=lambda i: i.number)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文