【发布时间】:2016-05-09 22:06:27
【问题描述】:
我想用 Python 编写这个 C# 函数,不幸的是我有这个 ERROR: IndexError: list assignment index out of range in Population.BinaryX.insert([i][j], dec) 行。谁能告诉我如何解决这个问题?!我做错了什么?
C# 代码:
public class Population
{
public float[] CodedX = new float[20];
public float[,] BinaryX = new float[10, 8];
}
private void BinaryTranslating()
{
int dec;
int j = 0;
for (var i = 0; i < 10; i++)
{
while (Population.CodedX[i] > 1 & j < 8)
{
dec = (int)Population.CodedX[i] % 2;
Population.BinaryX[i, j] = dec;
Population.CodedX[i] /= 2;
j++;
}
j = 0;
}
}
private void DecimalTranslating()
{
for (var i = 0; i < 10; i++)
{
Population.CodedX[i] = Population.BinaryX[i, 7] * 128 + Population.BinaryX[i, 6] * 64 +
Population.BinaryX[i, 5] * 32 + Population.BinaryX[i, 4] * 16 +
Population.BinaryX[i, 3] * 8 + Population.BinaryX[i, 2] * 4 +
Population.BinaryX[i, 1] * 2 + Population.BinaryX[i, 0];
}
}
Python 代码:
class Population:
CodedX = []
BinaryX = [[], []]
class Application:
@staticmethod
def binary_translating():
j = 0
for i in range(10):
while Population.CodedX[i] > 1 & j < 8:
dec = int(Population.CodedX[i]) % 2
Population.BinaryX.insert([i][j], dec)
Population.CodedX[i] /= 2
j += 1
j = 0
@staticmethod
def decimal_translating():
for i in range(10):
new_item = Population.BinaryX[i][7] * 128 + Population.BinaryX[i][6] * 64 + Population.BinaryX[i][5] * 32 +\
Population.BinaryX[i][4] * 16 + Population.BinaryX[i][3] * 8 + Population.BinaryX[i][2] * 4 +\
Population.BinaryX[i][1] * 2 + Population.BinaryX[i][0]
Population.CodedX.insert(i, new_item)
【问题讨论】:
-
不应该对布尔值使用按位与,在 Python 中使用正确的“与”运算符。
-
你能告诉我们你是如何定义
Population.BinaryX的吗? -
您可以发布 CodedX 的示例吗?什么是 BinaryX?
-
[i][j]没有做你想做的事。 -
是
BinaryX一个多维列表/数组吗?
标签: c# python arrays function python-3.x