2014-02-07 4 views
0

До сих пор у меня есть следующие:В python, как правильно использовать очереди?

fnamw = input("Enter name of file:") 
def carrem(fnamw): 
    s = Queue() 
    for line in fnamw: 
     s.enqueue(line) 
    return s 

print(carrem(fnamw)) 

Вышесказанное не напечатать список номеров в файле, который я вход вместо получается следующее:

<__main__.Queue object at 0x0252C930> 

ответ

1

При печати Queue , вы просто печатаете объект напрямую, поэтому вы получаете этот результат.

Вы не хотите печатать представление объекта, но я предполагаю, что вы хотите распечатать содержимое очереди. Для этого вам необходимо вызвать метод get очереди. Стоит отметить, что при этом вы исчерпаете очередь.

Замена print(carrem(fnamw)) на print(carrem(fnamw).get()) должна напечатать первый элемент очереди.

Если вы действительно хотите распечатать список элементов в очереди, вы должны просто использовать список. Очередь - это особенно, если вы ищете структуру данных FIFO (first-in-first-out).

+0

я думаю, что я мог бы быть в состоянии это с помощью списка, но я бы узнать с помощью очередей или стеков и я знаю, что это может быть done – rggod

+0

@rggod Использовать очереди, когда у вас есть причина использовать очереди. Попытка вставить их в неловкие ситуации, когда они не имеют смысла, только смутит вас и людей, читающих ваш код. –

+0

, но просто делать это не там, где я останавливаюсь, я пытаюсь удалить значения флип, поэтому я думал, что очереди будут лучшим способом. – rggod

1

Мне кажется, что на самом деле у вас нет необходимости в Queue в этой программе. A Queue используется в основном для синхронизации и передачи данных при многопоточном программировании. И это действительно не похоже на то, что вы пытаетесь сделать.

Для вас использования, вы можете точно также использовать обычный список Python:

fnamw = input("Enter name of file:") 
def carrem(fnamw): 
    s = [] 
    for line in fnamw: 
     s.append(line) 
    return s 

print(carrem(fnamw)) 

На той же ноте, однако, вы на самом деле не читает файл. Программа, как вы процитировали ее, просто поместит каждого символа в имя файла как отдельную запись в список (или очередь). То, что вы действительно хотите это:

def carrem(fnamw): 
    s = [] 
    with open(fnamw) as fp: 
     for line in fp: 
      s.append(line) 
    return s 

Или еще проще:

def carrem(fnamw): 
    with open(fnamw) as fp: 
     return list(fp) 
Смежные вопросы