2d Array Python:列表索引超出范围

时间:2015-09-23 13:38:39

标签: python arrays

我是Python编程的新手,我正在尝试编写代码来检查DFA(确定性有限自动机)是否有空语言。

我正在使用二维数组来存储DFA的状态。  在执行代码时,我不断使列表索引超出范围。我该如何解决这个问题?

以下是代码

top=-1
count=0
n=int(input("\nEnter the no of states"))
mat=[[]]
b=[]
print("\nEnter the transition table")
for i in range(0,n):
   for j in range(0,n):
    mat.append(input())
finalState=input("\nEnter the final state:")
startState=input("\nEnter the start state:")      

for i in range(0,n):
   for j in range(0,n):
      if mat[i][j]:
        b[++top]=j
for k in range(top):
      if b[k]==finalState:
      count+=1
if count>0:
print("\nLanguage is  not empty")
else:
print("\nLanguage is empty")

1 个答案:

答案 0 :(得分:3)

当你制作2x2表时,你想要mat [[1,2],[3,4]],但你现在得到[[],1,2,3,4]

相反,请尝试:

mat = []
for i in range(n):
    row = []
    for j in range(n):
        row.append(input())
    mat.append(row)

此外,Python没有" ++"运算符,因此b[++top]=jb[top] = j相同。如果要增加top,则在使用它来索引列表之前,必须在它自己的行上执行此操作。

除此之外,b的元素为零,因此以任何方式对其进行索引都会导致崩溃。如果您尝试通过向其添加新项目来增加b的大小,请使用append。那么你根本不需要top变量。

b.append(j)