为什么`a`也被视为2D数组?

时间:2018-11-28 08:19:20

标签: python-3.x

我是Python编程的新手。在此Python代码中,首先将a视为我们在 C 中称为一维数组。但是,在中间,它会将其视为2D阵列!

n=int(input("Enter number of rows: "))
a=[]
for i in range(n):
    a.append([])
    a[i].append(1)
    for j in range(1,i):
        a[i].append(a[i-1][j-1]+a[i-1][j])   #this line
    if(n!=0):
        a[i].append(1)
for i in range(n):
    print("   "*(n-i),end=" ",sep=" ")
    for j in range(0,i+1):
        print('{0:6}'.format(a[i][j]),end=" ",sep=" ")
    print()

我没有这个主意。谁能解释我在#this line(第7行)中注释的行中发生的情况?谢谢。

1 个答案:

答案 0 :(得分:3)

Python是动态类型的,因此这是可能的。数组(在python中称为列表)可以包含多个列表和值。

a=[1,"a",["abc",10]]
# Here you get the "abc" by calling
print(a[2][0]) 

在您的示例中,在此处添加一个列表:

n=int(input("Enter number of rows: "))
a=[]
for i in range(n): 
    a.append([]) # <---- insert a list into the list

上面的最后一行使列表a成为2D列表。

如果您来自C,您可能会对链接列表的实现很熟悉,这些链接列表被实现为在每个节点中包含一个void *值。这与将节点的值分配给另一个链表的头部相同。