2015-07-22 3 views
0

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

binCounts = [] 
for i in range(len(bins)): 
    binCounts.append(0) 

где bins массив, который выглядит примерно так:

['chrY', '28626328', '3064930174', '28718777', '92449', '49911'], ['chrY', '28718777', '3065022623', '28797881', '79104', '49911'], ['chrY', '28797881', '3065101727', '59373566', '30575685', '49912']] 

При запуске в интерактивном режиме Пайтона только range(len(bins)), Я получаю:

[0, 1, 2] 

, но когда я проверяю весь код, я получаю

[0,0,0] 

Я считаю, что я должен получать

[0, 1, 2, 0] 

Это приводит к делению на ноль ошибок позже вниз по линии. Почему это происходит? Как я могу это исправить? Я ценю ваше руководство!

+2

Что вы думаете 'binCounts.append (0)' делает? – Andy

+0

добавляет '0' в конец списка ..? – mfk534

ответ

2

Вы получаете список нулей из-за этой линии:

binCounts.append(0) 

Каждый раз через петлю, вы добавляете ноль к binCount


Если ваша цель - поставить ноль только в конце списка, вытащите эту линию из петли for

for i in range(len(bins)): 
    # Logic 
binCounts.append(0) 

Похоже, вы создаете список со значениями в диапазоне от 0 до длины bins. Вы можете сделать это без for цикла:

binCounts = range(len(bins)) 
binCounts.append(0) 

В конце этих двух линий, binCounts будет:

[0, 1, 2, 0] 
+0

Большое спасибо. Удаление цикла for имеет большой смысл, и я ценю это предложение. Я все еще привыкаю к ​​формальным формам ввода Python, и, похоже, это то, где большинство моих проблем исходят. Не могли бы вы порекомендовать хороший текстовый редактор, который не будет скользить по ложным вкладкам и тому подобное? (Я использую TextWrangler, который довольно хорош, но может быть, что-то сделано специально для Python?) – mfk534

+0

У Python есть несколько [IDE] (https://wiki.python.org/moin/IntegratedDevelopmentEnvironments), которые вы можете выбрать. Они варьируются от автономных приложений, посвященных разработке Python, для плагинов для Eclipse, Visual studio или других. Этот [ответ] (http://stackoverflow.com/questions/81584/what-ide-to-use-for-python) также полезен – Andy

+2

@ mfk534, попробуйте pycharm - https://www.jetbrains.com/pycharm/download/- даже издание сообщества очень хорошее – ISanych

3

Ваш код добавить 0 к списку 3 раза, так что вы получаете именно то, что вы просили. Может быть, вы хотели бы сделать:

binCounts = [] 
for i in range(len(bins)): 
    binCounts.append(i) 
binCounts.append(0) 
+0

Большое спасибо! Мне пришлось поместить пробел между «binCounts.append (i)» и «binCounts.append (0)», а затем он работал как шарм. Я ценю это. – mfk534

Смежные вопросы