0

我想根据我拥有的这些数据生成一个矩阵:

[[0, 1], [1, 0], [0, 2], [1, 1], [2, 0], [0, 3], [1, 2], [2, 1], [ 3, 0]]

我想要做的是,如果方括号内的总和等于 1,则生成一个字符串变量 y_n,其中 n 是满足该条件的列表的计数器,如果总和大于 1,则为 yxn,其中 n 计算数字产生的字符串。因此,对于我的数据,它应该产生:

y_1 
y_2
yx1
yx2

取决于

yx7

所以我最好的尝试是:

if len(gcounter) != 0:
  hg = len(gcounter[0])
else:
  hg=1
  LHS=Matrix(hg,1,lambda i,j:(var('yx%d' %i)))
print(LHS)

该数据称为 gcounter。

它没有给我一个错误,但它没有用任何东西填满 LHS

4

1 回答 1

1

我不完全确定我理解你在做什么,但我认为这个生成器可以满足你的需求:

def gen_y_strings(data):
    counter_1 = counter_other = 0
    for item in data:
        if sum(item) == 1:
            counter_1 += 1
            yield "y_{}".format(counter_1)
        else:
            counter_other += 1
            yield "yx{}".format(counter_other)

你可以像这样运行它:

for result in gen_y_strings(gcounter):
    print(result)

哪个,给定示例数据,输出你想要的:

y_1
y_2
yx1
yx2
yx3
yx4
yx5
yx6
yx7
于 2013-05-07T18:29:16.633 回答