Первая ошибка:
Traceback (most recent call last):
File "C:\foo\foo.py", line 17, in <module>
diffCounts[ str(getBin(diff)) ] += 1
TypeError: list indices must be integers
Почему вы конвертируете int в str, когда требуется str? Исправьте это, тогда мы получим:
Traceback (most recent call last):
File "C:\foo\foo.py", line 17, in <module>
diffCounts[ getBin(diff) ] += 1
IndexError: list index out of range
потому что вы сделали только 5 ведер. Я не понимаю вашу схему группирования, но давайте сделаем 50 блоков и посмотрим, что произойдет:
6
Traceback (most recent call last):
File "C:\foo\foo.py", line 21, in <module>
maxBin = max(maxdiff)
TypeError: 'int' object is not iterable
maxdiff
- это одно значение из вашего списка целых, так что же здесь делает max
? Удалите его, теперь мы получаем:
6
Traceback (most recent call last):
File "C:\foo\foo.py", line 28, in <module>
print binStr + '\t' + '\t'.join(map(str, (diffCounts[i])))
TypeError: argument 2 to map() must support iteration
Конечно, вы используете одно значение в качестве второго аргумента map
. Давайте упростим две последние строки из этого:
binStr = '[' + str(lo) + ',' + str(hi) + ')'
print binStr + '\t' + '\t'.join(map(str, (diffCounts[i])))
к этому:
print "[%f, %f)\t%r" % (lo, hi, diffCounts[i])
Теперь он печатает:
6
[0.000000, 1.000000) 3
[1.000000, 3.000000) 0
[3.000000, 7.000000) 2
[7.000000, 15.000000) 0
[15.000000, 31.000000) 0
[31.000000, 63.000000) 0
[63.000000, 127.000000) 3
Я не уверен, что еще здесь делать, так как я не совсем понимаю, что вы собираетесь использовать. Кажется, он включает в себя бинарные способности, но не имеет смысла для меня ...