Python: lista de listas crecientes de tamaño N

Dados los números enteros N y M, construya una lista creciente hasta M, siendo cada lista de tamaño N, es decir, todas las listas de combinaciones.

Entrada : N = 2, M = 3
Salida : [(1, 2), (1, 3), (2, 3)]
Explicación : elementos pares crecientes.

Entrada : N = 1, M = 4
Salida : [(1, ), (2, ), (3, ), (4, )]
Explicación : Elementos pares crecientes.

Método #1: Usar bucle

Esta es una forma de fuerza bruta en la que se puede realizar esta tarea. En esto iteramos por elementos hasta M, y formamos listas con tamaño N. El inconveniente es que estamos restringidos a listas de tamaño limitado.

Python3

# Python3 code to demonstrate working of 
# List of N size increasing lists
# Using loop
  
# initializing N
N = 2
  
# initializing M
M = 4
  
# outer loop manages lists
res = []
for idx in range(1, M):
      
    # inner loop manages inner elements
    for j in range(idx + 1, M + 1):
        res.append((idx, j))
  
# printing result 
print("The constructed combinations : " + str(res)) 
Producción

The constructed combinations : [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

Método #2: Usar combinaciones()

Esta es una función incorporada que ofrece la funcionalidad exacta requerida para esta solución. Resuelve el problema en una sola línea de obtener listas cada vez mayores.

Python3

# Python3 code to demonstrate working of 
# List of N size increasing lists
# Using combinations()
from itertools import combinations
  
# initializing N
N = 2
  
# initializing M
M = 4
  
# using combinations to perform task 
res = list(combinations(list(range(1, M + 1)), N))
  
# printing result 
print("The constructed combinations : " + str(res)) 
Producción

The constructed combinations : [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

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 *