Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅当第一个元素中存在一个时,才获取列表的组合_Python - Fatal编程技术网

Python 仅当第一个元素中存在一个时,才获取列表的组合

Python 仅当第一个元素中存在一个时,才获取列表的组合,python,Python,初学者问题 给定K个字符的N个元素的列表,所有可能的输出字符串,使得输出字符串的第i个字符来自第i个输入字符串 Example: ex: N=3 K=2 input = ['ab', 'xy', 'mn'] output =['axm' , 'axn', 'ayn','aym', 'bxm' ,'bxn','byn' ,'bym'] 正如您所看到的,输出中的第一个元素总是来自输出中的第一个字符串 任何建议都会有帮助,提前谢谢 这就是我所拥有的 def foo(K, N, str_list):

初学者问题

给定K个字符的N个元素的列表,所有可能的输出字符串,使得输出字符串的第i个字符来自第i个输入字符串

Example:
ex:  N=3 K=2
input = ['ab', 'xy', 'mn']
output =['axm' , 'axn', 'ayn','aym', 'bxm' ,'bxn','byn' ,'bym']
正如您所看到的,输出中的第一个元素总是来自输出中的第一个字符串

任何建议都会有帮助,提前谢谢

这就是我所拥有的

def foo(K, N, str_list):
    """ 
    K int
    N int
    str_list list[str]
    """
    start_element = str_list[0]
    rem_list = str_list[1:]

    for item in range(N):
      word = rem_list[item]
      for i in range(K):
        print(word[i])  

    return 
我的方法是将第一个元素作为常量,然后在其他元素之间循环,但对于itertools来说,这并不完全有效 使用
itertools.product

input = ['ab', 'xy', 'mn']
["".join(x) for x in itertools.product(*input)]
结果:

['axm', 'axn', 'aym', 'ayn', 'bxm', 'bxn', 'bym', 'byn']
没有itertools 如果不想使用
itertools
,另一种选择是使用递归解决方案:

def cross_prod(l):
    if len(l) == 1:
        return [c for c in l[0]]
    else:
        sub_prod = cross_prod(l[1:])
        res = [e + sub_res for e in l[0] for sub_res in sub_prod ]
        return res

input = ['ab', 'xy', 'mn']
print(cross_prod(input))
结果又是:

['axm', 'axn', 'aym', 'ayn', 'bxm', 'bxn', 'bym', 'byn']

你试过什么?请发布您的代码。我会的,一秒钟后我在输出中看不到“axy”-尽管它确实符合您的定义。那是故意的吗?定义应该更严格吗?因为“xy”在同一个字符串中,所以它将被忽略。一般来说,组合不应该有来自同一个字符串的多个元素。感谢您的努力,也许不使用itertools?(a)我的理解是,您要找的正是叉积的定义。(b) itertools有什么问题?也许你可以对我的方法给出反馈?让我知道我是否走在正确的道路上?@Ryan-注意,实际上没有必要将N和K作为参数传递。你可以从列表中推断出来。出于好奇,你介意说说为什么itertools在你的用例中不起作用吗?我只是好奇。