You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

能否用单个通用函数替代两个Python正负转换函数?

能否用单个通用函数替代两个Python正负转换函数?

当然可以!而且实现起来相当简洁,完全能保留原两个函数的功能——不管你传入的是列表还是元组,它都能返回对应类型的负数值集合。

咱们直接上代码,这个通用函数的写法非常巧妙:

def negative(a):
    return type(a)(-e for e in a)

原理说明:

  • type(a) 会自动获取传入参数的类型(比如你传列表就返回list,传元组就返回tuple
  • 然后用这个类型的构造函数,把生成器表达式(-e for e in a)的结果转换成对应类型的实例,生成器的作用就是把每个元素取反

你可以直接测试一下效果,和原函数完全一致:

# 测试列表输入
print(negative([1, 2, 3]))  # 输出: [-1, -2, -3]
# 测试元组输入
print(negative((4, 5, 6)))  # 输出: (-4, -5, -6)

甚至这个函数还具备一定的扩展性——如果以后你需要处理其他支持用生成器构造实例的可迭代序列类型(比如某些自定义序列),它也能正常工作,当然前提是序列里的元素支持取反操作,这和原函数的限制是一样的。

备注:内容来源于stack exchange,提问作者Paul Jurczak

火山引擎 最新活动