在Python中print()[]的含义是什么?

时间:2013-07-11 12:55:22

标签: python python-2.7

在浏览codegolf时,我找到了this

g=input();print("Approved","Summer School","Failed")[(g<7)+(g<3)]

我不明白[]在打印后的含义是什么... ...有任何澄清吗?

3 个答案:

答案 0 :(得分:5)

>>> print("Approved","Summer School","Failed")[0]
Approved
>>> print("Approved","Summer School","Failed")[1]
Summer School
>>> print("Approved","Summer School","Failed")[2]
Failed

看模式?它只是简单的索引。

顺便说一下,我们始终知道(g<7)+(g<3)将是>= 0False + False)和<= 2True + True)。

回想一下,boolint的子类,而True == 1False == 0(这就是我们可以添加bool的原因以上)。

最后,不言而喻,通过一组额外的括号可以很容易地避免这种混淆:

print(("Approved","Summer School","Failed")[(g<7)+(g<3)])

答案 1 :(得分:2)

这只是元组索引。与此无异:

x = (1, 2, 3)[1]

2分配给x

在更复杂的变体中,选择元组的元素,然后传递给print

令人困惑的是,代码看起来像是在调用名为print的函数。通过将print转换为函数,Python 3中删除了这种混淆。你的问题中的代码在Python 3中完全不同。

答案 2 :(得分:0)

print(x,y,...)[i]应解析为print (x,y)[i]。它只是打印后跟tuple