如果我想保持功能,而不想在中间使用*,那么等效的替代函数是什么?例如,
import operator as op
print(op.eq(*map(str.upper, ['a', 'A'])))如何避免在这里使用*?
我创建了一个函数,比如,
def unpack(args):
return *args但是它会产生语法错误,print(*args)工作,但return失败。
发布于 2022-04-11 07:06:26
实现这一目标的一种方法是创建一个名为apply的函数。
def apply(func, args):
return func(*args)apply(op.eq, map(str.upper, ['a', 'A']))发布于 2022-04-10 15:09:16
functools.reduce可用于将两个参数的函数应用于可累积迭代,这将适用于您的示例情况。
import operator as op
from functools import reduce
print(reduce(op.eq, map(str.upper, ['a', 'A'])))发布于 2022-04-10 15:09:43
您可以使用reduce来检查所有映射的元素是否彼此相等。
from functools import reduce
print(reduce(op.eq, map(str.upper, ['a', 'A'])))不过,这并不是一件明智的事。我之所以这样说,是因为上面的reduce调用并不泛化为多或少元素的情况:
如果输入为空,它将在TypeError: reduce() of empty sequence with no initial value.
True或False.
False.。
如果您的计划是使用确切的两个操作数调用op.eq,那么使用*解压缩是合适的。即使是在功能范围内。
https://stackoverflow.com/questions/71817809
复制相似问题