如何插入二维列表?

时间:2017-10-24 12:16:02

标签: python

这是我的源代码我这样做而不使用导入数学

#2-d list append
n=int(input('enter final value'))
l=[]
for i in range(0,3):
    l[i]=[]
    if i==0:
        for x in range(0,n+1):
            if x%2==0:
                l[i].append(x)
    if i==1:
        for x in range(0,n+1):
            if x%2!=0:
                l[i].append(x)
    if i==2:
        for x in range(0,n+1) and x!=1:
            f=0
            a=int(n/2)
            for j in range(2,a):
                if x%j==0:
                    f+=1
            if(f==0):
                l[i].append(x)
     l.append(l[i])
 print(l)

它显示以下错误:

Traceback (most recent call last):
  File "C:/Users/New/Desktop/py/2_D.py", line 5, in <module>
    l[i]=[]
IndexError: list assignment index out of range

我想知道如何更正我的代码以便能够插入二维列表

2 个答案:

答案 0 :(得分:1)

l是一个空列表。然后尝试将空列表分配给l的第一个元素,但它没有第一个元素,因为它是空的。您可能希望append使用l.append([])

注意,在行中:

for x in range(0,n+1) and x!=1:

条件需要在下一行进入if语句,并在其后适当缩进后的代码块。

n=int(input('enter final value'))
l=[]
for i in range(0,3):
    l.append([])   # append an empty list
    if i==0:
        for x in range(0,n+1):
            if x%2==0:
                l[i].append(x)
    if i==1:
        for x in range(0,n+1):
            if x%2!=0:
                l[i].append(x)
    if i==2:
        for x in range(0,n+1):
            if x!=1:   # Moved the if statement to a new line
                f=0
                a=int(n/2)
                for j in range(2,a):
                    if x%j==0:
                        f+=1
                if(f==0):
                    l[i].append(x)
    l.append(l[i])
print(l)

答案 1 :(得分:0)

写下这一行:

l.append([])

代替

l[i] =[]

当你写l [i]解释器时尝试访问l [0]但l的长度为零。