2024-05-20 04:39:04 发布
网友
我在一个竞争性的编程网站上,发现一个人写了一个奇怪的(对我来说)Python3代码:
[r,"Nothing"][r==""]
如果r是空字符串,则输出'Nothing'。在
r
'Nothing'
这是怎么叫的?它是什么意思?它看起来像三元运算符。在
How is this called and what does it mean? It looks like a ternary operator.
在Python-AFAIK中没有它的正式名称;实际上,它只是索引列表的一种狡猾、复杂的方法。在
您将选择"Nothing"如果r==""是True,而{}如果r == ''是{};例如:
"Nothing"
r==""
True
r == ''
>>> [0, 1][True] 1 >>> [0, 1][False] 0
因为索引列表时,True和{}分别被解释为1和{}。在
1
提供的代码片段只定义了一个包含两个元素[r, "Nothing"]的临时列表,然后使用r与空字符串[r=='']的比较结果为其编制索引。在
[r, "Nothing"]
[r=='']
不是最可读的代码,也可能不是创建不打算使用的列表的最佳方法;它可以很容易地被条件表达式替换:
可读性更强,效率更高:
%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:
False
它是一个与其他语言中的'condition'?'if true':'if false'类似的单行线。它通常用于code golf中,您必须生成尽可能短的代码。在
'condition'?'if true':'if false'
在Python-AFAIK中没有它的正式名称;实际上,它只是索引列表的一种狡猾、复杂的方法。在
您将选择}如果};例如:
"Nothing"
如果r==""
是True
,而{r == ''
是{因为索引列表时,}分别被解释为}。在
True
和{1
和{提供的代码片段只定义了一个包含两个元素
[r, "Nothing"]
的临时列表,然后使用r
与空字符串[r=='']
的比较结果为其编制索引。在不是最可读的代码,也可能不是创建不打算使用的列表的最佳方法;它可以很容易地被条件表达式替换:
^{pr2}$可读性更强,效率更高:
不需要创建列表,也不需要为其下标;只需要一个条件和一些加载。在
它的意思是:
在此上下文中,
^{pr2}$False
用作0,True
用作1:它是一个与其他语言中的
'condition'?'if true':'if false'
类似的单行线。它通常用于code golf中,您必须生成尽可能短的代码。在相关问题 更多 >
编程相关推荐