Estoy trabajando en una matriz 2D con un algoritmo polinómico simple:

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

Este código en sí no se compila por una simple razón. dot_matrix no está inicializado. Entonces, ¿cuál es la forma más fácil de hacer eso?

Además, ¿cómo podría implementar la misma lógica que estoy usando arriba en un código de una línea como esta:

matriz = [[0 para x en rango (len (contenido1))] para x en rango (len (contenido2))]

2
adolfosrs 28 ago. 2014 a las 03:10

2 respuestas

La mejor respuesta

Por un lado, está usando content1 como índice externo en el primer fragmento de código, por lo que matric también debe inicializarse con content1 en el externo:

matrix = [[0 for x in range(len(content2))] for x in range(len(content1))]

Y sí, puede hacerlo en una línea como la otra respuesta menciona:

matrix = [[1 if i == j else 0 for j in content2] for i in content1]
2
Cocksure 27 ago. 2014 a las 23:17

Reemplace las x s con i y j, luego reemplace las 0 con (1 if content1[i]==content2[j] else 0).

1
aecolley 27 ago. 2014 a las 23:15