我在一个竞争激烈的编程网站上,发现一个人写了这个奇怪的(对我来说)Python 3代码:
[r,"Nothing"][r==""]
Run Code Online (Sandbox Code Playgroud)
它输出'Nothing',如果r是空字符串.
这怎么称呼它是什么意思?它看起来像一个三元运算符.
这怎么称呼它是什么意思?它看起来像一个三元运算符.
Python AFAIK中没有正式名称; 真的,它只是一种偷偷摸摸,错综复杂的索引列表方式.
你会选择"Nothing",如果r==""是True和r,如果r == ''是False; 举个例子:
>>> [0, 1][True]
1
>>> [0, 1][False]
0
Run Code Online (Sandbox Code Playgroud)
因为True和索引列表时分别False被解释为1和0.
提供的代码片段只定义了包含两个元素的临时列表,[r, "Nothing"]然后使用与空字符串True/False进行比较的结果对其进行索引.r[r=='']
不是最易读的代码,可能不是创建您不打算使用的列表的最佳主意; 它可以很容易地被条件表达式替换:
"Nothing" if r == "" else r
Run Code Online (Sandbox Code Playgroud)
更具可读性和更高效:
%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
Run Code Online (Sandbox Code Playgroud)
无需创建列表,也无需下标; 只是条件和一些加载.
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |