该命令的解释

时间:2018-09-13 05:33:04

标签: python python-3.x

我真的是python的新手,主要来自R语言的编程。在学习期间,我遇到了这段代码。

xs=[()]
res=[False]*2
if xs:
    res[0]= True
if xs[0]:
    res[1]=True
print(res)

最初,我认为这是初始化空数组的一种方法。但是,当我运行相同的代码片段将初始化部分替换为空列表时,它给我一个错误。

xs=list()
res=[False]*2
if xs:
    res[0]= True
if xs[0]:
    res[1]=True
print(res)

有人可以帮我理解这两个代码之间的区别吗?任何帮助表示赞赏。谢谢!

2 个答案:

答案 0 :(得分:0)

在第一个

xs=[()] <---------

您的xs看起来像这样

xs[0] = ()

第二个

xs = list()

表示

xs = []

如此

xs[0] # does not xsist

答案 1 :(得分:0)

问题的基础是两个列表定义,请考虑以下代码:

xs1 = [()]   # create a list with a single element, which is an empty tuple
xs2 = list() # create an empty list

xs在您的第一个代码块中有一个元素(一个空列表),因此它可以工作。在第二个代码块中,xs真正为空(具有零个元素),因此代码失败,因为xs [0]不存在。