📜  Python - K 长度连接单值元组

📅  最后修改于: 2022-05-13 01:54:36.055000             🧑  作者: Mango

Python - K 长度连接单值元组

有时,在使用Python元组时,我们可能会遇到一个问题,即我们需要执行单个值元组的连接,以将它们组合成更大的组。此类问题可能发生在 Web 开发和日常编程中。让我们讨论可以执行此任务的某些方式。

方法 #1:使用 zip() + 列表理解
上述功能的组合可以用来解决这个问题。在此,我们执行使用 zip() 形成组和使用列表理解构造值的任务。 K 的大小只能限制为 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))


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))


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


方法 #2:使用 zip_longest() + chain.from_iterables()
上述功能的组合可以用来解决这个问题。在此,我们使用 zip_longest() 执行连接任务,chain.from_iterables() 用于在连接之前将元组展平以列出元素。

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