我使用简单的多项式算法在2D矩阵中工作:
for i in range(len(content1)):
for j in range(len(content2)):
if content1[i]==content2[j]:
matrix[i][j]=1
else:
matrix[i][j]=0
此代码本身无法编译,原因很简单。 dot_matrix未初始化。那么更简单的方法是什么呢?
另外,我怎样才能在上面这样的单行代码中实现相同的逻辑:
matrix = [[x for x in range(len(content1))] for x in range(len(content2))]
答案 0 :(得分:2)
首先,您在第一个代码块中使用content1作为外部索引,因此matric应该在外部使用content1进行初始化:
matrix = [[0 for x in range(len(content2))] for x in range(len(content1))]
是的,你可以像其他答案一样在一行中完成:
matrix = [[1 if i == j else 0 for j in content2] for i in content1]
答案 1 :(得分:1)
将x
替换为i
和j
,然后将0
替换为(1 if content1[i]==content2[j] else 0)
。