Есть ли способ добавить объект в Python? Приоритетные очереди - PullRequest
0 голосов
/ 23 марта 2019

В настоящее время я получаю сообщение об ошибке, когда дело доходит до моей функции enQueue.Когда я пытаюсь добавить номер в мой список объектов, он говорит: «set» объект не имеет атрибута «append».Я предполагаю, что проблема связана с тем, как я передаю в списке, но это в настоящее время моя проблема.У меня есть один жестко запрограммированный список размером 10, потому что я не хотел составлять больший список, пока не узнаю, что происходит.Любая помощь будет оценена.Также комментарии, которые у меня есть в коде, - это то, что я хочу сделать в качестве конечного результата.Если у вас есть какой-либо вклад в это, это будет более чем полезно.Однако сейчас я хотел бы просто выяснить, как не получить эту ошибку.Спасибо.

class PQ_List(object):

    def __init__(self, sampleList):
        print ("creates an unsorted list from passed in list")
        self.list = sampleList
        print (self.list)
#      
#        Returns the list 

    def enQueue(self, item):
        print ("adds an item to the PQ")
        self.list.append(item)
        print (self.list)
#       Add an item to the PQ 

    def deQueue(self):
        print ("removes the highest priority item from the PQ")
        self.list = self.list[1:]
        print (self.list)
#       Remove the highest priority item from the PQ 


    def sneakAPeek(self):
        print ("returns the highest priority in the PQ, but does not remove it")
        return self.list[0]
#
#       Return the highest priority item from the PQ, but don't remove it

    def isEmpty(self):
        print ("returns T if PQ is empty, F if PQ has entries")
        if len(self.list) > 0:
            return 'F'
        else:
            return 'T'
#       Return a T if PQ is empty, F if PQ is not empty 
#       
    def size(self):
        print ("returns number of items in queue")
        return len(self.list)
#       Return the number of items in the queue

sampleList = {1, 2, 5, 8, 4, 15, 13, 12, 10, 6}

my_listPQ = PQ_List(sampleList) #print first 10 numbers, use size to prove the rest is there
my_listPQ.enQueue(1500)
my_listPQ.deQueue()
my_listPQ.sneakAPeek()
my_listPQ.isEmpty()
my_listPQ.size()

Я ожидаю, что результат прибавит 1500 к списку для функции enQueue.Затем выполните следующие функции.Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 23 марта 2019

В python вы используете квадратные скобки [, ] для списков и фигурные скобки {, } для наборов.

Следовательно, измените строку

sampleList = {1, 2, 5, 8, 4, 15, 13, 12, 10, 6}

до

sampleList = [1, 2, 5, 8, 4, 15, 13, 12, 10, 6]

и вам пора.

0 голосов
/ 23 марта 2019

изменение

sampleList = {1, 2, 5, 8, 4, 15, 13, 12, 10, 6}  # this is set and don't have append

к этому:

sampleList = [1, 2, 5, 8, 4, 15, 13, 12, 10, 6]  # this is list
...