Python: возврат определенной переменной класса в массиве из связанного списка - PullRequest
0 голосов
/ 14 марта 2020

Проблема

Я работаю с объектами класса в одном связанном списке. Было бы неплохо иметь метод, который возвращает указанные переменные c. Возможно ли это?

enter image description here

Пока у меня есть метод в классе Linked List:

Работает

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

    def getListZ(self,):
        val = self.headval
        arr = []
        while val is not None:
            arr.append(val.val.Z)
            val = val.nextval
        return arr

Хочет:

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

    def getListZ(self,var):
        item = self.headval
        arr = []
        while val is not None:
            arr.append(item.val.var)
            item = item.nextval
        return arr

Вопросы

  1. Как я могу написать метод, который возвращает список определенных переменных из объектов класса? Допустим, я хочу вернуть список всех сопротивлений. Как мне это сделать?

Обходной путь

Я могу получить список для любой требуемой переменной (в примере, список вызывается из другого класса):

vals1 = [item.val.val1 for item in self.list]

Итерация возможна с помощью следующего метода:

    def __iter__(self):
        node = self.headval
        while node:
            yield node
            node = node.nextval

Однако

Я все равно буду возможность динамически печатать несколько переменных из моего объекта в связанном списке. Как я могу сделать это переменной вместо жесткого кодирования, как я сделал ниже?

Код

Сценарий

class Node:
    def __init__(self, val=None):
        self.val = val
        self.nextval = None

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

    def __iter__(self):
        node = self.headval
        while node:
            yield node
            node = node.nextval

    # Function to add newnode
    def AtEnd(self, newdata):
        NewNode = Node(newdata)
        if self.headval is None:
            self.headval = NewNode
            return
        laste = self.headval
        while(laste.nextval):
            laste = laste.nextval
        laste.nextval=NewNode

    # Print the linked list
    def listprint(self,):
        printval = self.headval
        while printval is not None:
            try:
                print (printval.val.nodes,printval.val.Ctype,printval.val.Z,sep='\t')
            except:
                print (printval.val.nodes,printval.val.Ctype,sep='\t')                
            printval = printval.nextval
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...