如何使用布尔值进行索引在Python中工作?

时间:2014-07-02 22:51:23

标签: python python-3.x

我是Python的新手,我看到了一个我无法理解并且不知道如何搜索的构造。它的片段是这样的:

for i in range(10):
    print("Start",[' ', i][i > 5],"End", sep="")

那么[' ', i][i > 5]究竟如何运作?我可以看到,如果满足第二个列表中的条件,则选择第二个参数,否则第一个参数,即空白区域。任何逻辑和一般解释?

3 个答案:

答案 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="")

对我来说更有意义:它不那么狡猾而且(我认为)更容易理解。