我想在python中创建一个函数,因为输入会获取一个列表,其中包含未指定数量的字符串,其长度也不是标准的或彼此相同。输入将是这样的:
list = ['1234', '4', '97', ... , '542']
此列表的第一个元素表示可能是数字的第一个数字的所有可能数字,第二个元素表示可能是第二个数字的可能数字,依此类推。作为输出,我希望有一个列表,其中包含可以通过这种方式生成的所有可能的数字。这是一个例子:
input = ['12', '45', '865']
output = ['148', '146', '145', '158', '156', '155',
'248', '246', '245', '258', '256', '255']
有算法吗?我不是蟒蛇新手,但这个问题让我感到茫然。谢谢你的帮助。
答案 0 :(得分:4)
from itertools import product
input = ['12', '45', '865']
[''.join(prod) for prod in product(*input)]
# ['148', '146', '145', '158', '156', '155', '248', '246',
# '245', '258', '256', '255']
itertools.product将多个迭代作为参数,并生成其笛卡尔积 当您的iterables(您的字符串)在列表中时,我们使用* input语法来解压缩列表的元素以分隔位置参数。
答案 1 :(得分:1)
使用Python 2.7进行测试
Input = ['12', '45', '865']
out = [[]]
# algo
for liste in Input:
out = [x + [y] for x in out for y in liste]
#print out # un comment to see how algo works
index = 0
while index < len(out):
out[index] = ''.join(out[index])
index += 1
print out
# prodcues:
# ['148', '146', '145', '158', '156', '155',
# '248', '246', '245', '258', '256', '255']
# The while loop can be reduced to:
# print [''.join(liste) for liste in out]