Python 用另一个列表中的值顺序替换列表值

Python 用另一个列表中的值顺序替换列表值,python,list,Python,List,假设我有一个列表: my_list = ["A", "B", "C", "X", "X", "X"] 我想用另一个列表中的值或2D列表中的值替换X值(该列表生成时重复编号等于列表中“X”的编号): 所以 我的问题是如何用组合中的值替换My_list中的“X”值,这样第一个结果将是[“A”、“B”、“C”、“L”、“L”、“L”]和第二个结果[“A”、“B”、“C”、“L”、“L”、“E”]等。我最好将它们放入一个2D列表中,然后打印出来 编辑:为了澄清,my_list将是未知的,“X”值可能以

假设我有一个列表:

my_list = ["A", "B", "C", "X", "X", "X"]
我想用另一个列表中的值或2D列表中的值替换X值(该列表生成时重复编号等于列表中“X”的编号):

所以

我的问题是如何用组合中的值替换
My_list
中的“X”值,这样第一个结果将是
[“A”、“B”、“C”、“L”、“L”、“L”]
和第二个结果
[“A”、“B”、“C”、“L”、“L”、“E”]
等。我最好将它们放入一个2D列表中,然后打印出来

编辑:为了澄清,
my_list
将是未知的,“X”值可能以未知方式分散

试试这个:

my_list = ['A', 'B', 'C', 'X', 'X', 'X']
new_list = [my_list[:3] + list(c) for c in itertools.product('LE',repeat=3)]
[['A', 'B', 'C', 'L', 'L', 'L'],                                                
 ['A', 'B', 'C', 'L', 'L', 'E'],                                                
 ['A', 'B', 'C', 'L', 'E', 'L'],                                                
 ['A', 'B', 'C', 'L', 'E', 'E'],                                                
 ['A', 'B', 'C', 'E', 'L', 'L'],                                                
 ['A', 'B', 'C', 'E', 'L', 'E'],                                                
 ['A', 'B', 'C', 'E', 'E', 'L'],                                                
 ['A', 'B', 'C', 'E', 'E', 'E']]
要获取my_列表中“X”的编号,请执行以下操作:

count = len(filter(lambda v: v == 'X',my_list))
我可以使用:

def mergefill(to_fill, fill_char, fill_from):
    for filler in fill_from:
        it = iter(filler)
        yield [c if c != fill_char else next(it) for c in to_fill]

>>> my_list = ["A", "B", "C", "X", "X", "X"]
>>> list(mergefill(my_list, 'X', product('LE', repeat=3)))
[['A', 'B', 'C', 'L', 'L', 'L'], ['A', 'B', 'C', 'L', 'L', 'E'], ['A', 'B', 'C', 'L', 'E', 'L'], ['A', 'B', 'C', 'L', 'E', 'E'], ['A', 'B', 'C', 'E', 'L', 'L'], ['A', 'B', 'C', 'E', 'L', 'E'], ['A', 'B', 'C', 'E', 'E', 'L'], ['A', 'B', 'C', 'E', 'E', 'E']]
它还处理填充字符不连续的情况:

>>> my_list = ["A", "X", "B", "X"]
>>> list(mergefill(my_list, 'X', product('LE', repeat=2)))
[['A', 'L', 'B', 'L'], ['A', 'L', 'B', 'E'], ['A', 'E', 'B', 'L'], ['A', 'E', 'B', 'E']]

非常感谢,这正是我想要的。
>>> my_list = ["A", "B", "C", "X", "X", "X"]
>>> list(mergefill(my_list, 'X', product('LE', repeat=3)))
[['A', 'B', 'C', 'L', 'L', 'L'], ['A', 'B', 'C', 'L', 'L', 'E'], ['A', 'B', 'C', 'L', 'E', 'L'], ['A', 'B', 'C', 'L', 'E', 'E'], ['A', 'B', 'C', 'E', 'L', 'L'], ['A', 'B', 'C', 'E', 'L', 'E'], ['A', 'B', 'C', 'E', 'E', 'L'], ['A', 'B', 'C', 'E', 'E', 'E']]
>>> my_list = ["A", "X", "B", "X"]
>>> list(mergefill(my_list, 'X', product('LE', repeat=2)))
[['A', 'L', 'B', 'L'], ['A', 'L', 'B', 'E'], ['A', 'E', 'B', 'L'], ['A', 'E', 'B', 'E']]