2016-05-11 3 views
0

У меня есть цикл:Python - поиск определенного элемента в списке

for x in range(0, len(temp)): 
    if temp[val] == char: 
     print (" %-9r | %10d | %12s" % (char, frequency, huffmanCode[char])) 
     val += 1 

Что предполагается сделать, это переменная символ следует искать в списке темп, и если он будет найден, он будет отображаться ,

Например, если я введу «Google», то выход должен быть:

Character | Frequency | Huffman Code 
------------------------------------ 
'g'  |   2 |   0 
'o'  |   2 |   11 
'o'  |   2 |   11 
'g'  |   2 |   0 
'l'  |   1 |   101 
'e'  |   1 |   100 

Но почему-то ничего не отображается. Как мне искать весь список тем для персонажей?

+0

Вы бы описали 'temp'? Это словарь или список или ... – DrBwts

+0

temp - это список @DrBwts, в основном он содержит все символы в данной строке, включая пробелы и специальные символы. – Paradigm

+0

Ну, я верю вам, что сообщение не ясно. Вы не используете 'x', вы не объяснили, что такое' temp' и что он содержит, вы не сказали, что такое 'val'. Также в вашем «примере», «если вы вводите« google »... ... введите google где? – tglaria

ответ

2

Вы должны искать индекс x вместо val? Не видя весь ваш код/​​что означают эти переменные, трудно сказать. Но если temp [val] сначала не равно char, он никогда не будет увеличиваться, поэтому результат никогда не изменится.

Попробуйте это, может быть?

for x in range(0, len(temp)): 
    if temp[x] == char: 
     print (" %-9r | %10d | %12s" % (char, frequency, huffmanCode[char])) 
     val += 1 
+0

Я пробовал это и ввел слово «тестирование», и это вышло http://imgur.com/gA3X4w1. Он должен быть напечатан на основе того, как написано это слово ... @stackunderflow – Paradigm

+0

вы, возможно, пресекаете свой список перед итерацией по нему? попробуйте запустить его с помощью этого: 'temp = list ('testing')' – stackunderflow

+0

no @stackunderflow Я создал еще один список, чтобы убедиться, но все же распечатывает то же самое, и да, это именно то, что я сделал. Я использовал только временную переменную в этой части. – Paradigm

1

Вы можете использовать функцию подсчета из массива объектов, он возвращает число раз, когда элемент появляется в списке, и если метод возвращает 0 вы можете пропустить печать. НЕТ:

if temp.count(char) > 0 : 
    print (" %-9r | %10d | %12s" % (char, frequency, huffmanCode[char])) 
Смежные вопросы