У меня есть кусок кода, который был написан на Ruby. Я хочу преобразовать его в Python.
def decode(bitstring, search_space, bits_per_param)
vector = []
search_space.each_with_index do |bounds, i|
off, sum = i*bits_per_param, 0.0
param = bitstring[off...(off+bits_per_param)].reverse
param.size.times do |j|
sum += ((param[j].chr=='1') ? 1.0 : 0.0) * (2.0 ** j.to_f)
end
min, max = bounds
vector << min + ((max-min)/((2.0**bits_per_param.to_f)-1.0)) * sum
end
return vector
end
Я конвертирую, как показано ниже. Мне нужна помощь в конвертации param
.
def decode(bitstring, search_space, bits_per_param):
vector = []
for i, bounds in enumerate(search_space):
sum = i * bits_per_param
for j in xrange(0, len(param)):
sum += iif(param[j] == '1', '0', '1') * (2 ** j), param[j]
min, max = bounds
vector = min + ((max - min) / ((2.0 ** bits_per_param) - 1.0)) * sum
return vector
param
не был преобразован правильно.
пс. Вот код функции iif :
def iif(condition, true_part, false_part):
return (condition and [true_part] or [false_part])[0]