我注意到在下面的代码片段中,两种方法都得到相同的结果:
>>> a = [1,2,3]
>>> print(a[0])
1
>>> print(a)[0]
1
>>>
我有些惊讶,因为我本来期望print(a)
返回一个字符串,所以下标0仅返回第一个字符(即:[])。但是,似乎Python将其解释为列表?
有人可以澄清吗?
答案 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