Python – 获取列表中的所有数字组合
有时,在使用Python列表时,我们可能会遇到需要将每个数字与其他创建新数字连接起来的问题。这种问题很特殊,但可以在许多领域都有应用,例如日间编程和游戏。让我们讨论可以执行此任务的某些方式。
Input : test_list = [7, 3, 4, 5]
Output : [73, 74, 75, 34, 35, 45]
Input : test_list = [2, 5]
Output : [25]
方法#1:使用列表理解+ combination()
上述功能的组合可以用来解决这个问题。在此,我们使用combination() 执行查找所有组合的任务,并且f-strings 可用于执行连接。
# Python3 code to demonstrate working of
# All numbers combinations
# Using list comprehension + combinations
from itertools import combinations
# initializing list
test_list = [59, 236, 31, 38, 23]
# printing original list
print("The original list : " + str(test_list))
# All numbers combinations
# Using list comprehension + combinations
res = [int(f"{x}{y}") for x, y in combinations(test_list, 2)]
# printing result
print("All numbers combinations : " + str(res))
The original list : [59, 236, 31, 38, 23]
All numbers combinations : [59236, 5931, 5938, 5923, 23631, 23638, 23623, 3138, 3123, 3823]
方法 #2:使用循环 + str() + int()
上述功能的组合可以用来解决这个问题。在此,我们执行在嵌套循环中使用蛮力和类型转换形成组合的任务。这也输出反向组合。
# Python3 code to demonstrate working of
# All numbers combinations
# Using loop + str() + int()
from itertools import combinations
# initializing list
test_list = [59, 236, 31, 38, 23]
# printing original list
print("The original list : " + str(test_list))
# All numbers combinations
# Using loop + str() + int()
res = []
for i in test_list:
for j in test_list:
if j != i:
res.append(int(str(i) + str(j)))
# printing result
print("All numbers combinations : " + str(res))
The original list : [59, 236, 31, 38, 23]
All numbers combinations : [59236, 5931, 5938, 5923, 23659, 23631, 23638, 23623, 3159, 31236, 3138, 3123, 3859, 38236, 3831, 3823, 2359, 23236, 2331, 2338]