Python:您可以使用单行将枚举传递给函数吗?

问题描述 投票:0回答:1

作为思想实验,我不得不问自己(显然是你),因为我不得不频繁地键入这两行。可以压缩成一行吗?

我有各种具有功能的类。这些类的对象不可避免地会出现在列表中。我经常必须使用枚举值为列表的每个项目调用一个函数。是否有一个干净的单线解决方案?还是只坚持尝试和真实?

for choice, action in enumerate(availableActions, 1):
     action.show(choice)

我尝试了一些列表理解都没有用。

python enumerate
1个回答
0
投票

正如几个人已经指出的那样,您最初的枚举方法是通常接受的语法。但是,如果您想将该代码缩短为1行,则可以通过列表理解来完成。以下是一些示例:

# Original method
for choice, act in enumerate(a, 1):
    act.show(choice)

# 1 line version without unpacking tuple
[e[1].show(e[0]) for e in enumerate(a, 1)]

# 1 line version with tuple unpacking
[e.show(i) for i, e in enumerate(a, 1)]

我希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.