Traspuesta de una matriz en pitón, python3 la función zip ()

Hace unos días el grupo había estudiantes plantea la pregunta: ¿a la mano ahora tiene una lista, una lista de las cuales dos elementos, como por ejemplo [1, 2], y luego continuaron añadiendo nueva lista, añadir a la posición original en consecuencia. Por ejemplo, la adición de [3, 4] de modo que la expansión de la lista original es [[1, 3], [2, 4]], add [5, 6] La expansión de [[1, 3, 5], [2, 4, 6 ]] y así sucesivamente.

De hecho, sin cerebro, a continuación, utilizar un bucle doble es fácil de escribir:

Copiar el código
Trans DEF (m): 
    A = [[] para I en m [0]] 
    para I en m: 
        para J en Rango (len (I)): 
            A [J] .Append (I [J]) 
    devolver un 

m = [[1, 2], [3, 4], [5, 6]] # imaginar la primera lista es el original, este último se añade dentro de la 
impresión trans (m) # resultado: [[1, 3 , 5], [2, 4, 6]]
Copiar el código

Sin embargo, no importa cuán vistazo a este código es feo.

M observó cuidadosamente esta estructura. Y así sucesivamente, esto no es un diccionario (iteritems) el resultado de la misma? Si dict (m), entonces el resultado - no es que las teclas () y valores () ¿Por qué?

Convertirlo con el diccionario:

def trans (m): 
    d = dict (m) 
    de retorno [d.keys (), d.values ()]

Pero piense de nuevo, y hay errores. Si el primer elemento de la lista para el mismo, que es lo mismo después de la tecla dict conversión, ciertamente no es cierto! Por otra parte, si la lista original no es dos, sino más bien, ciertamente no se puede utilizar un diccionario! Por lo tanto este método para darse por vencido, o echar un vistazo a la forma de la lista.

A continuación, un descuido encontró:

 

Esta matriz transpuesta sentido inmediato es ¿cómo es?

Sí, la naturaleza del problema es cómo resolver la matriz transpuesta. Así es simple, con uno o irreflexiva manera:

Copiar el código
def trans (m): 
    para i en el rango (LEN (m)): 
        para j en el rango de (i): 
            m [i] [j], m [j] [i] = m [j] [i], m [i] [j] 
    de retorno m 

m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
imprimir trans (m)
Copiar el código

Pero es todavía un poco miradas de errores son fáciles de usar, pero esto requiere una matriz de filas igual a la longitud del trabajo.

Por último, un gran grupo donde Dios dice: Si la matriz no incorporó, a continuación, zip directamente suficiente. Sólo pensar en ello esta es la esencia de la cremallera, quitar el elemento de posición correspondiente en la lista, la composición de la nueva lista, que tiene derecho a hacer esto.

Así que al final, el sujeto (matriz transpuesta) de solución de pitón es bastante fantástica:

def trans (m): 
lista de regreso (zip (* m))

Sí, es así de simple. encanto del pitón.

 

python3 la función zip ()

ZIP ()  función se puede utilizar para el objeto iterativo como un parámetro, el elemento correspondiente del objeto embalado en una tupla, entonces el objeto se devuelve del grupo que consiste de estos elementos, los beneficios de hacerlo es guardar una gran cantidad de memoria.

Podemos utilizar la lista () para convertir la lista de salida.

Si el número de elementos de cada inconsistencia iterador, la longitud más corta de la lista y devuelve el mismo objeto, utilizando el  operador asterisco, tuplas que va a extraer la lista.

Método en diferente zip 3 Python 2 y Python :. 3 en el Python .X con el fin de reducir la memoria, ZIP () devuelve un objeto. Para mostrar la lista, tiene que manualmente lista de conversión (). 

Si es necesario entender la aplicación Pyhton3, consulte python3 postal ().

gramática

zip sintaxis:

postal ([ iterable , ...]) 

parámetros:

  • iterabl - uno o más iterador;

El valor de retorno

Devuelve una lista de tuplas.

Ejemplos

El siguiente ejemplo demuestra el uso de la cremallera:

>>> A = [ . 1 , 2 , . 3 ] >>> B = [ . 4 , . 5 , . 6 ] >>> C = [ . 4 , . 5 , . 6 , . 7 , . 8 ] >>> cremallera = postal ( A , B ) # empaquetado como una lista de tuplas [ ( 1 , 4 ) , ( 2 , 5 ) , ( . 3 , . 6 ) ] >>> postal ( A , C ) # consistente con el número de elementos en la lista más corta [ ( . 1 , . 4 ) , ( 2 , . 5 ) , ( . 3 , . 6 ) ] >>> postal ( * cremallera ) en contraste con cremallera #, * cremallera entiende que ser descomprimido, para devolver una matriz de dos dimensiones [ ( 1 , 2 , 3 ) , ( 4 , 5 , 6 ) ]

Supongo que te gusta

Origin www.cnblogs.com/zb-ml/p/12576817.html
Recomendado
Clasificación