首页 > 解决方案 > 用另一个列表中的元素随机替换列表中的某些元素,python

问题描述

我有两个列表,并且我希望将 A 中的子列表的特定元素(y)随机替换为列表 B 中的元素。

A=[[x, y], [z, y], [b, y]]
B=[y1, y2]

所以一些可能的输出看起来像这样,

A=[[x, y1], [z, y1], [b, y2]]
A=[[x, y2], [z, y2], [b, y2]]
A=[[x, y2], [z, y2], [b, y1]]

但一次只有 1 个输出。如果代码再次运行,可能会有另一个输出等等。我不太确定如何解决这个问题,因此感谢您的帮助。

标签: pythonlistreplace

解决方案


您可以保留[0]元素,然后使用random.choice从中随机选择一个元素B用作[1]元素。

import random
def random_replace(A, B):
    return [[i[0], random.choice(B)] for i in A]

一些例子

>>> random_replace(A, B)
[['x', 'y2'], ['z', 'y2'], ['b', 'y1']]
>>> random_replace(A, B)
[['x', 'y2'], ['z', 'y1'], ['b', 'y1']]
>>> random_replace(A, B)
[['x', 'y1'], ['z', 'y2'], ['b', 'y2']]

推荐阅读