Python: convierte la lista 2D a 3D en el corte K

A veces, mientras trabajamos con listas de Python, podemos tener un problema en el que necesitamos convertir una lista 2D a 3D, en cada lista Kth. Este tipo de problema es peculiar, pero puede tener aplicación en varios dominios de datos. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [[6, 5], [2, 3], [3, 1], [4, 6], [3, 2], [1, 6]], K = 3
Salida : [[[ 6, 5], [2, 3], [3, 1]], [[4, 6], [3, 2], [1, 6]]]

Entrada : test_list = [[6, 5], [2, 3], [3, 1]], K = 1
Salida : [[[6, 5]], [[2, 3]], [[3, 1]]]

Método n.º 1: Uso del bucle
Esta es la forma bruta en la que se puede realizar esta tarea. En esto, iteramos a través de cada elemento y mantenemos un contador, en cada sublista Kth, creamos una nueva lista y agregamos en consecuencia.

# Python3 code to demonstrate working of 
# Convert 2D list to 3D at K slicing
# Using loop
  
# initializing list
test_list = [[6, 5], [2, 3], [3, 1], [4, 6], [3, 2], [1, 6]] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 2
  
# Convert 2D list to 3D at K slicing
# Using loop
res = []
subl = []
cnt = 0
for sub in test_list:
    subl.append(sub)
    cnt = cnt + 1
    if cnt >= K:
        res.append(subl)
        subl = []
        cnt = 0
  
# printing result 
print("Records after conversion : " + str(res))
Producción :

The original list is : [[6, 5], [2, 3], [3, 1], [4, 6], [3, 2], [1, 6]]
Records after conversion : [[[6, 5], [2, 3]], [[3, 1], [4, 6]], [[3, 2], [1, 6]]]

Método #2: Uso zip()de la comprensión de lista +
La combinación de las funciones anteriores también se puede utilizar para resolver este problema. En esto, realizamos la tarea primero dividiendo los valores según el tamaño y luego se usa la comprensión de la lista junto con zip() para la conversión de dimensiones.

# Python3 code to demonstrate working of 
# Convert 2D list to 3D at K slicing
# Using zip() + list comprehension
  
# initializing list
test_list = [[6, 5], [2, 3], [3, 1], [4, 6], [3, 2], [1, 6]] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 2
  
# Convert 2D list to 3D at K slicing
# Using zip() + list comprehension
test_list = iter(test_list)
temp = [test_list] * K
res = [list(ele) for ele in zip(*temp)]
  
# printing result 
print("Records after conversion : " + str(res))
Producción :

The original list is : [[6, 5], [2, 3], [3, 1], [4, 6], [3, 2], [1, 6]]
Records after conversion : [[[6, 5], [2, 3]], [[3, 1], [4, 6]], [[3, 2], [1, 6]]]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *