用另一个列表中的元素随机替换列表中的某些元素,python

Asi*_*siv 0 python replace list

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

A=[[x, y], [z, y], [b, y]]
B=[y1, y2]
Run Code Online (Sandbox Code Playgroud)

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

A=[[x, y1], [z, y1], [b, y2]]
A=[[x, y2], [z, y2], [b, y2]]
A=[[x, y2], [z, y2], [b, y1]]
Run Code Online (Sandbox Code Playgroud)

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

Cor*_*mer 5

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

import random
def random_replace(A, B):
    return [[i[0], random.choice(B)] for i in A]
Run Code Online (Sandbox Code Playgroud)

一些例子

>>> 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']]
Run Code Online (Sandbox Code Playgroud)