问题标签 [walrus-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
127 浏览

python - 两个海象运算符在一个 If 语句中

有没有正确的方法在 1 个 if 语句中有两个海象运算符?

此示例适用于threefive将“未定义”。

0 投票
2 回答
56 浏览

python - python:列表理解中的海象运算符和 re.search()

我有一个字符串列表,我想从元素中提取模式。

例如,给定 list["A 12345bcd", "BYT 676 CCC"]和 pattern r'\d\d\d\d\d',我想获得: ["12345", ""]

我知道没有它怎么办,但我想使用 walrus operator :=

我试过了:

[(m:=re.search(r'\d\d\d\d\d', x), m.group() if m else "") for x in ["A 12345bcd", "BYT 676 CCC"]]

但结果是:

[(<re.Match object; span=(2, 7), match='12345'>, '12345'), (None, '')]

因此,不是我想要的

0 投票
0 回答
40 浏览

python - 使用二分搜索编码示例的海象算子风格问题

有时我发现算法逻辑的简洁表达比冗长的表达更直观。一个例子是二分搜索(维基百科),一个简单的 Python 实现如下:

(注意:我已经引入LR参数作为要搜索的排序数组参数中间隔的第一个和最后一个索引A,而不是使用维基百科页面的伪代码中n的长度参数。)A

依赖条件表达式和赋值表达式(海象运算符)的更短的实现是:

对我来说,虽然单行循环体很简洁,严格来说可能比使用传统 if/else 块的展开循环体需要更多的操作,但最好是它不需要眼睛上下移动通过代码来掌握发生了什么。它告诉我,在第一次更新M为当前搜索区间的中点之后L, R,我们然后通过缩小它来更新该区间,使其左侧相同,右侧减少,反之亦然,具体取决于 的相对值排序后的输入数组中的中点值A和目标值T

事实上,如果我说实话,我真正想做的是:

我想知道上面的第二个和第三个代码示例是否有任何样式指南通知禁令,或者这些是否被认为是海象运算符的风格上可接受的用途?

0 投票
0 回答
20 浏览

python - 使用海象运算符获取无效语法

使用海象运算符得到一个无效的语法错误有什么想法吗?我试图让用户实际选择一个有效的选择或让循环一遍又一遍,除非输入 5