Цикл по связанному списку, содержащему массивы в Python - PullRequest
0 голосов
/ 14 ноября 2018

Я изо всех сил пытаюсь понять, как использовать цикл для запуска по списку, который содержит 4 значения массива: «a_value», «b_value», «c_value», «d_value». Каждый из моих массивов в этом списке имеет 23 элемента. Результат, который я ищу, - запустить цикл, хотя список добавляет все 23 элемента каждого массива. НАПРИМЕР. итоговое значение «a_value», итоговое значение «b_value» и т. д. это то, что я имею до сих пор. Спасибо, ребята.

class node():
    def __init__(self, dataval = None):
        self.dataval = dataval
        self.nextval = None

class linked_list():
    def __init__(self):
        self.headval = None

    def listprint(self):
        printval = self.headval
        while printval != None:
            print (printval.dataval)
            printval = printval.nextval        


arraylist = linked_list()
arraylist.headval = node(a_value) # each '""_value' has 23 integer values 
in them
e2 = node(b_value)
e3 = node(c_value)
e4 = node(d_value) 

arraylist.headval.nextval = e2
e2.nextval = e3
e3.nextval = e4

arraylist.listprint()

i = 1
x = 1
total_a = 0
total_b = 0
total_c = 0
total_d = 0

for n in arraylist:
    for z in range(len(n)-1)
        value_a = int(a_value[i])
        total_a+=value_a
        i+= 1
    x+=1        

1 Ответ

0 голосов
/ 14 ноября 2018

вы можете попробовать что-то вроде этого:

    a_value = [1,2,3]
    b_value = [4,5,6]
    c_value = [7,8,9]
    d_value = [10,11,12]

    class node():
        def __init__(self, dataval = None):
            self.dataval = dataval
            self.nextval = None


    class linked_list():
        def __init__(self):
            self.headval = None

        def listprint(self):
            printval = self.headval
            while printval != None:
                print (printval.dataval)
                printval = printval.nextval


    arraylist = linked_list()
    arraylist.headval = node(a_value)
    e2 = node(b_value)
    e3 = node(c_value)
    e4 = node(d_value)

    arraylist.headval.nextval = e2
    e2.nextval = e3
    e3.nextval = e4

    node = arraylist.headval     # fetch head node  
    nextval = node.nextval         # fetch next to node
    list = []
    list.append(node.dataval)       # enter all head list

    while nextval:              # this loop will break as nextval is none
        node = node.nextval     # node now becomes next and repeat
            if hasattr(node, 'nextval'):
                nextval = node.nextval
            else:
                nextval = None
        list.append(node.dataval)

    sum = 0

    for x in list:          # sum in the end or break into 23 for all separate
        for y in x:
            sum+=y

    print(list, sum)

    #OUTPUT [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 78

Работает нормально:)

...