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 个输出。如果代码再次运行,可能会有另一个输出等等。我不太确定如何解决这个问题,因此感谢您的帮助。
您可以保留该[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)