【问题标题】:+= with multiple variables in python [closed]+=在python中有多个变量[关闭]
【发布时间】:2014-02-23 13:49:06
【问题描述】:

我正在尝试同时增加多个变量并将其粘贴到一行中。如果有办法,最pythonic的方法是什么?

【问题讨论】:

标签: python increment


【解决方案1】:

如果你想写一行,你可以尝试多次赋值,但不要使用+=语法:

a, b, c = a+1, b+1, c+1

或者对于更 Pythonic 的解决方案,请避免使用单线:

a += 1
b += 1
c += 1

【讨论】:

  • 我喜欢我的代码在一个衬里我开始认为这实际上可能只是最简单的方法。
  • @user3255511 如果你的代码格式不正确,你将来会有很多死敌,xD
  • 如果你不得不在……哦……两个月后维护自己的代码,你也会诅咒自己。我打赌你也不喜欢 cmets。
  • @user3255511 不想在这里讲道......我知道“宗教”辩论在 SO 不合适,我不想开始一个“更好”的辩论,但 如果 如您所说,您更喜欢将多个操作塞进一行的紧凑语法,那么您可能会更喜欢 Perl。 Matt Ball 的评论很好地总结了这一点。另一方面,Perlish 的方式是在一条线上完成所有操作以及至少两三件事。
  • 此处提供的两个示例等效。前者提供同步更新,这是 OP 请求的一部分,但后者不提供。
【解决方案2】:

说你有

a, b, c = [1, 2, 3]

在你定义之后:

def add1(x):
    return x+1

你可以这样做:

print(map(f,[a, b, c])) # prints [2, 3, 4]

这意味着以下行将为您提供您想要的:

a, b, c = map(add1,[a, b, c])

这比做起来容易一点:

a, b, c = a+1, b+1, c+1

如果你有一个大数组。此外,您可以保持可读性获得您的“单线”。

【讨论】:

  • 这需要将它转换成一个列表,这让我担心更复杂但有用的信息。它给了我关于如何最终使用 lambda 函数的想法。
  • @user3255511 当然,您可以定义 lambda "inline"(在地图内)
猜你喜欢
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2022-11-02
  • 2023-01-15
相关资源
最近更新 更多