python - 在python中分配计数器时递增计数器
问题描述
是否可以在 python 中以某种方式执行以下操作?
nodename = 'node%s' % (++num if ct[0] != 'J' else num)
还是我需要先进行增量并在下一行分配它:
if ct[0] != 'J':
num += 1
nodename = 'node%s' % num
解决方案
Python 3.8+ 有海象运算符,它允许你在表达式中赋值给一个变量。该表达式var := expr
将 的值分配expr
给var
,并产生相同的值。
这意味着可以在 Python 中通过 . 这会增加,结果是 的新增加值。这似乎是您正在寻找的行为。++var
var := var + 1
var
var
在具有这些运算符的语言中,后增量运算符 var++
具有不同的行为;它递增var
,但表达式的值var++
是 的旧的、未递增的值var
。从您的代码示例来看,这似乎不是您要寻找的行为,但为了完整起见,它可以在 Python 中通过(var, var := var + 1)[0]
. 这将计算一个包含 的旧值var
和新值的var
元组,然后得到该元组的第一个组件(即旧的、未递增的值)。
也就是说,我建议不要使用前者,强烈建议不要使用后者,因为它在 Python 中非常不习惯。如果你想做两件不同的事情(即增加num
和格式化一个字符串),如果你分开做它们会更易读和更容易理解。
推荐阅读
- reactjs - 阿波罗客户端 3 缓存在突变后不更新
- c - 链接器错误 (LNK2019) 未定义对 __imp_ 的引用
- r - R中的分段函数帮助
- reactjs - React useState 不会立即改变
- python-3.x - 将数据框列从系列转换为日期时间
- java - 无法使用 spark(sqlContext) 在 aws redshift 中写入 csv 数据
- python - 尝试重新运行函数,直到它使用请求在 python 中返回特定值
- javascript - 对齐导航栏项目、徽标和图像
- python - 如何使用 numpy.matmul 广播其他维度?
- spring - 关于 Spring Boot 消息转换器的困惑