为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何用另一个列表中的所有元素替换列表中的元素?

Python:如何用另一个列表中的所有元素替换列表中的元素?

绝地无双 2021-03-06 15:12:50
我在Python中有两个看起来像这样的列表: lst = [1, '?2'] replace_lst1 = ['a','b','c']对于'?2'in中的每次出现lst,我都希望用中的每个元素替换它,replace_lst1从而产生如下列表列表:res = [ [1,'a'],         [1,'b'],        [1,'c'] ]同样,如果我有以下列表:lst = [1, '?2','?3']replace_lst1 = ['a','b','c']replace_lst2 = ['A', 'B', 'C']我想'?2'用中的每个元素replace_lst1和'?3'中的每个元素替换replace_lst2,从而探索所有可能的排列。结果应如下所示:res = [ [1,'a','A'],         [1,'a','B'],        [1,'a','C'],        [1,'b','A'],         [1,'b','B'],        [1,'b','C'],        [1,'c','A'],         [1,'c','B'],        [1,'c','C'] ]如果您能为我提供一些建议,那就太好了。
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

如果您稍稍更改数据结构,那么对于itertools模块而言,这是一个微不足道的问题:


>>> lst = [1]

>>> combine = [["a", "b", "c"], ["A", "B", "C"]]

>>> import itertools

>>> [lst+list(item) for item in itertools.product(*combine)]

[[1, 'a', 'A'], [1, 'a', 'B'], [1, 'a', 'C'], [1, 'b', 'A'], [1, 'b', 'B'], 

 [1, 'b', 'C'], [1, 'c', 'A'], [1, 'c', 'B'], [1, 'c', 'C']]


查看完整回答
反对 回复 2021-03-30
?
临摹微笑

TA贡献1982条经验 获得超2个赞

>>> from itertools import product

>>> lst = [1]

>>> combine = [["a", "b", "c"], ["A", "B", "C"]]

>>> list(product(*[lst]+combine))

[(1, 'a', 'A'), (1, 'a', 'B'), (1, 'a', 'C'), (1, 'b', 'A'), (1, 'b', 'B'), (1, 'b', 'C'), (1, 'c', 'A'), (1, 'c', 'B'), (1, 'c', 'C')]

你也可以使用


list(product(lst, replace_lst1, replace_lst2))


查看完整回答
反对 回复 2021-03-30
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我将使用itertools.product,外加一个测试来替换?。按值:


lst = [1, '?2','?3']

replace_lst1 = ['a','b','c']

replace_lst2 = ['A', 'B', 'C']

res = []

#put as many replace_lst as you need here

for values in itertools.product(replace_lst1, replace_lst2):

    val_iter = iter(values)

    res.append([x if str(x).find('?') == -1 else next(val_iter) for x in lst])

使用val_iter可以将?*放置在任何位置(但不能以任何顺序放置)。


查看完整回答
反对 回复 2021-03-30
  • 3 回答
  • 0 关注
  • 949 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号