Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/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,我想用元素组合替换列表中的变量。 更具体地说: 我有这两张单子 liste1 = [1,2,3,'X','X',4] liste2 = [5,6,7] 我想得到一个包含以下元素的列表: [1,2,3,5,6,4] [1,2,3,5,7,4] [1,2,3,6,7,4] [1,2,3,6,5,4] [1,2,3,7,5,4] [1,2,3,7,6,4] 有人知道怎么做吗?你可以这样做: from itertools import permutations liste1 = [1, 2, 3,

我想用元素组合替换列表中的变量。 更具体地说:

我有这两张单子

liste1 = [1,2,3,'X','X',4]
liste2 = [5,6,7]
我想得到一个包含以下元素的列表:

[1,2,3,5,6,4]
[1,2,3,5,7,4]
[1,2,3,6,7,4]
[1,2,3,6,5,4]
[1,2,3,7,5,4]
[1,2,3,7,6,4]

有人知道怎么做吗?

你可以这样做:

from itertools import permutations

liste1 = [1, 2, 3, 'X', 'X', 4]
liste2 = [5, 6, 7]

def replacements(liste1, liste2):
    x_indices = [i for i, val in enumerate(liste1) if val == 'X']
    nb = len(x_indices)
    for perm in permutations(liste2, nb):
        l1 = liste1[:] # if we want to preserve the original and yield different lists
        for i, new_val in zip(x_indices, perm):
            l1[i] = new_val
        yield l1

for r in replacements(liste1, liste2):
    print(r)
输出:

[1, 2, 3, 5, 6, 4]
[1, 2, 3, 5, 7, 4]
[1, 2, 3, 6, 5, 4]
[1, 2, 3, 6, 7, 4]
[1, 2, 3, 7, 5, 4]
[1, 2, 3, 7, 6, 4]

我们首先列出“X”出现的索引,然后生成
list2
中尽可能多的元素的排列。对于每个排列,我们将替换“X”。

除非您以前定义了
X
变量,否则您的第一个列表不是有效的Python代码,或者您的意思是
'X'
?请更新你的问题,完成了。我是说欢迎来到StackOverflow。此问题缺少上下文或其他细节:请提供额外的上下文来改进问题,其中最好包括您对问题的想法以及您为解决问题所做的任何尝试。这些信息有助于其他人识别您遇到的困难,并帮助他们写出适合您经验水平的答案。你还需要准确地说明你的困难是什么,你期望什么,你得到了什么,以及任何回溯。特别是,你在寻找替换
'X'
s的排列时有困难吗?它在做替换吗?还是别的什么?实际的答案是——是的,我确实知道怎么做。但在我提供具体帮助之前,您需要向我们展示更多内容。@第一个列表中是否总是只有2个
X
占位符?他们会一直在名单上并排吗?