我是Python的新手,我看到了一个我无法理解并且不知道如何搜索的构造。它的片段是这样的:
for i in range(10):
print("Start",[' ', i][i > 5],"End", sep="")
那么[' ', i][i > 5]
究竟如何运作?我可以看到,如果满足第二个列表中的条件,则选择第二个参数,否则第一个参数,即空白区域。任何逻辑和一般解释?
答案 0 :(得分:3)
第二个列表不是其索引运算符
的列表xs = [10,20,30]
xs[0] # gives 10
并且完全可以在列表文字上使用它而不是列表变量
[10,20,30][0] # gives 10
至于x < 5
,当您使用布尔值来索引Python中的列表时,它会转换为0和1.尝试执行xs[False]
和xs[True]
我绝对不会建议编写那种代码。它非常令人困惑和不直观。
答案 1 :(得分:2)
这些不是两个列表,它是由布尔值i > 5
索引的单个列表。您的代码相当于:
collection = [" ", i]
index = int(i > 5)
print(collection[index])
答案 2 :(得分:1)
这种表述非常受到某种程序员风格的喜爱,但坦率地说,它的默默无闻让我想要尖叫。为什么编写代码会花费30秒来理解何时使用其他更易于理解的技术更容易(并且可能不会更慢)?
for i in range(10):
print("Start", i if i > 5 else " ", "End", sep="")
对我来说更有意义:它不那么狡猾而且(我认为)更容易理解。