Python – Tupla de un solo valor concatenado de longitud K

A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos realizar la concatenación de tuplas de valores individuales, para convertirlas en grupos de mayor tamaño. Este tipo de problema puede ocurrir en el desarrollo web y la programación diaria. Analicemos ciertas formas en que se puede realizar esta tarea.
 

Entrada : test_list = [(3, ), (6, ), (8, ), (2, ), (9, ), (4, ), (7, ), (1, )], K = 4 
Salida : [(3, 6, 8, 2), (9, 4, 7, 1)]
Entrada : test_list = [(3, ), (6, ), (8, ), (2, ), (9, ), (4, ), (7, ), (1, )], K = 2 
Salida : [(3, 6), (8, 2), (9, 4), (7, 1)] 
 

Método #1: Usar zip() + comprensión de lista 
La combinación de las funciones anteriores se puede usar para resolver este problema. En este, realizamos la tarea de formar grupos usando zip() y la construcción de valores usando la comprensión de listas. El tamaño de K solo puede limitarse a 2.
 

Python3

# Python3 code to demonstrate working of
# K length Concatenate Single Valued Tuple
# Using zip() + list comprehension
 
# initializing lists
test_list = [(3, ), (6, ), (8, ), (2, ), (9, ), (4, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# K length Concatenate Single Valued Tuple
# Using zip() + list comprehension
res = [a + b for a, b in zip(test_list[::2], test_list[1::2])]
 
# printing result
print("Concatenated tuples : " + str(res))
Producción : 

The original list is : [(3, ), (6, ), (8, ), (2, ), (9, ), (4, )]
Concatenated tuples : [(3, 6), (8, 2), (9, 4)]

 

 
Método #2: Usar zip_longest() + chain.from_iterables() 
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de concatenación usando zip_longest() y chain.from_iterables() se usa para aplanar tuplas para listar elementos antes de la concatenación.
 

Python3

# Python3 code to demonstrate working of
# K length Concatenate Single Valued Tuple
# Using zip_longest() + chain.from_iterables()
from itertools import chain, zip_longest
 
# initializing lists
test_list = [(3, ), (6, ), (8, ), (2, ), (9, ), (4, )]
 
# printing original list
print("The original list is : " + str(test_list))
 
# initializing K
K = 3
 
# K length Concatenate Single Valued Tuple
# Using zip() + list comprehension
temp = [iter(chain.from_iterable(test_list))] * K
res = list(zip_longest(*temp))
 
# printing result
print("Concatenated tuples : " + str(res))
Producción : 

The original list is : [(3, ), (6, ), (8, ), (2, ), (9, ), (4, )]
Concatenated tuples : [(3, 6, 8), (2, 9, 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 *