附加到列表会给'int'对象没有属性'append'

时间:2015-11-29 08:20:51

标签: python list

我的问题是制作一个python程序,它填充方形矩阵的主对角线,其行号和从右到左的对角线及其列号。矩阵的其余元素被初始化为元素的索引之和。

所以我用以下代码解决了这个问题,但是当我尝试运行它时,它给出了以下错误:

Traceback (most recent call last):
  File "/home/shinigami/prac5.py", line 21, in <module>
    a[i].append(p)
AttributeError: 'int' object has no attribute 'append'

请告诉我是否有另一种方法可以在python中制作2D List并从用户那里获取输入!

a=[]
dimen=input('Enter the no of rows you want ? ')


for i in range(dimen):
    for j in range(dimen):
        i=int(i)
        j=int(j)
    #print('ENter the value for the',i+1,'row and',j+,'column')
    #p=input()
        if(j==0):
            if (j==i):
                a.append(i+1)
            else:
                a.append(i+j+2)
        else:
            if ((i+j)==(dimen-1)):
                a[i].append(j+1)
            else:
                p=i+j+2
                a[i].append(p)

for i in range(dimen):
    for j in range(dimen):
                i=int(i)
                j=int(j)
        print(" ",a[i][j])

    print("")

3 个答案:

答案 0 :(得分:0)

  

Traceback (most recent call last): File "/home/shinigami/prac5.py", line 21, in a[i].append(p) AttributeError: 'int' object has no attribute 'append'

您的变量alist inta[i].append(...)。当您写append时,您尝试在int类型上调用a.append(...)方法,这会导致错误。

a很好,因为listlist,但只要您索引进入append,就可以了解>>> a = [i for i in range(5)] >>> a [0, 1, 2, 3, 4] >>> a.append(5) >>> a [0, 1, 2, 3, 4, 5] >>> a[2].append(6) # won't work! Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'int' object has no attribute 'append' 。处理列表中的数字,他们没有>>> from pprint import pprint as pp >>> dim = 2 # take user input here >>> matrix = [(i, j) for i in range(dim) for j in range(dim)] >>> pp(matrix) [(0, 0), (0, 1), (1, 0), (1, 1)] # # Index into the matrix as you normally would. # >>> matrix[1][0] 0 >>> matrix[1][1] 1 方法。例如:

n = m.country.class == String

只需确保您使用的是正确的类型。您的代码中的逻辑目前非常复杂,因此您应该简化它。

  

另外,让我知道他们是制作2D LIST的另一种方式

您可以使用列表推导。例如:

n

上面是使用Python3测试的,但如果需要,你可以将它改编为Python2。

答案 1 :(得分:0)

我猜你想要像这样初始化~/abc.csv 数组的元素

/home/nishant/abs.csv

答案 2 :(得分:-2)

dimen是一个字符串而不是int 试着这样做

dimen=int(input('Enter the no of rows you want ? '))

这会将用户的输入转换为int

这是您的固定代码:

a=[]
dimen=int(input('Enter the no of rows you want ? '))


for i in range(dimen):
    for j in range(dimen):
        i=int(i)
        j=int(j)
    #print('ENter the value for the',i+1,'row and',j+,'column')
    #p=input()
        if(j==0):
            if (j==i):
                a.append(i+1)
            else:
                a.append(i+j+2)
        else:
            if ((i+j)==(dimen-1)):
                a[i]=j+1
            else:
                p=i+j+2
                a[i]=p

for i in range(dimen):
    for j in range(dimen):
                i=int(i)
                j=int(j)
        print(" ",a[i][j])

    print("")

请注意,您无法将某些内容添加到[i]中。您必须使[i]等于某个值