使用列表作为元素打印数组

时间:2015-09-08 06:51:28

标签: python arrays list printing

我开始创建一个数组,然后我用列表引用它的元素。现在我要打印整个数组(这是:数组上的所有列表),我创建了一个函数" show"和"显示数组"但总是打印数组的最后一个元素

在:

class Test:
    pass

def read(v, r):
    n = len(v)
    for i in range(0, n):
        v[i] = r
        v[i].number= 5+i
        v[i].name = i*2
        v[i].author = i+6
        v[i].genre = i*3
        v[i].quantity = i+2


def show_array(v):
    n = len(v)
    for i in range(0, n):
        show(v[i])


def show(reg):
    print(reg.number, end=' ; ')
    print(reg.name, end=' ; ')
    print(reg.author, end=' ; ')
    print(reg.genre, end=' ; ')
    print(reg.quantity)

def menu():

    v = 2 * [None]


    t= Test()
    read(v, t)

    show_array(v)


menu()

OUT:

6 ; 2 ;  7 ;  3 ;  3
6 ; 2 ;  7 ;  3 ;  3

3 个答案:

答案 0 :(得分:2)

不,您正在显示数组的所有元素。它们都指向相同的对象,因此当您在read循环中更改对象时,您可以在任何地方更改对象。您需要为数组中的每个位置创建一个新的Test对象。

答案 1 :(得分:0)

因为这只是一个。 第一个值总是被最后一个值覆盖。

您可以在“read()”的“for”中写“print(v [i] .name)”,您可以看到差异。 你应该创建一个新的。

答案 2 :(得分:0)

我不是python专家,但你可以尝试使用isinstance()这可以帮助你通过比较数组值和list来打印指定列表的所有值。如果它是一个列表然后打印该特定列表元素。如果它不是列表,则打印正常的数组值。

https://infohost.nmt.edu/tcc/help/pubs/python/web/isinstance-function.html