Python打印列表元素

时间:2019-02-05 11:21:46

标签: python

我注意到在下面的代码片段中,两种方法都得到相同的结果:

>>> a = [1,2,3]
>>> print(a[0])
1
>>> print(a)[0]
1
>>> 

我有些惊讶,因为我本来期望print(a)返回一个字符串,所以下标0仅返回第一个字符(即:[])。但是,似乎Python将其解释为列表?

有人可以澄清吗?

2 个答案:

答案 0 :(得分:4)

如前所述,您使用的是python 2.x,其中print是语句,而不是函数-因此print(a)[0]被解析为print a[0]-将括号作为解析优先级修饰符

重要的事情-print不会返回您正在打印的内容。它将数据发送到流(默认为stdout)。如果您使用的是python 3.x(其中print是函数)或使用from __future__ import print_function,则函数会将数据发送到流并返回None作为结果。因此,print(a)[0]将解决“将a的内容发送到标准输出并返回None[0]”的问题,稍后将引发IndexError

答案 1 :(得分:1)

正如注释栏中提到的 @jonrsharpe 一样,您可能正在运行python 2.x。

print语句在python 3.x中被print()函数替换了

>>> print(a)[0]
[1, 2, 3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not subscriptable