并排的两个方括号:strang

2024-05-20 04:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个竞争性的编程网站上,发现一个人写了一个奇怪的(对我来说)Python3代码:

[r,"Nothing"][r==""]

如果r是空字符串,则输出'Nothing'。在

这是怎么叫的?它是什么意思?它看起来像三元运算符。在


Tags: 字符串代码网站编程竞争性运算符python3nothing
2条回答

How is this called and what does it mean? It looks like a ternary operator.

在Python-AFAIK中没有它的正式名称;实际上,它只是索引列表的一种狡猾、复杂的方法。在

您将选择"Nothing"如果r==""True,而{}如果r == ''是{};例如:

>>> [0, 1][True]
1
>>> [0, 1][False]
0

因为索引列表时,True和{}分别被解释为1和{}。在

提供的代码片段只定义了一个包含两个元素[r, "Nothing"]的临时列表,然后使用r与空字符串[r=='']的比较结果为其编制索引。在

不是最可读的代码,也可能不是创建不打算使用的列表的最佳方法;它可以很容易地被条件表达式替换:

^{pr2}$

可读性更强,效率更高:

%timeit True if False else False
10000000 loops, best of 3: 32.9 ns per loop

%timeit [False, True][False]
10000000 loops, best of 3: 176 ns per loop

不需要创建列表,也不需要为其下标;只需要一个条件和一些加载。在

它的意思是:

if (r==""):
  'Nothing'
else:
  r

在此上下文中,False用作0,True用作1:

^{pr2}$

它是一个与其他语言中的'condition'?'if true':'if false'类似的单行线。它通常用于code golf中,您必须生成尽可能短的代码。在

相关问题 更多 >