如何用另一个列表元素随机替换列表元素?

emr*_*yol 5 python random replace list

x_list = ['a', 'b', 'c', 'd', 'e']
t_list = ['z', 'y', 'u']
Run Code Online (Sandbox Code Playgroud)

我想用“随机”t_list的元素替换 的元素x_list。我研究并尝试了一些东西,但replace()对列表不起作用。例如; x_new0 = ['a', 'z', 'c', 'y', 'u], x_new1 = ['z', 'y', 'c', 'd','u']. 我怎样才能做到这一点?

Cor*_*mer 2

您可以用来numpy.random.choice随机选择原始列表中要进行替换的元素。然后,zip这些索引针对您要用于替换的值并应用替换。

from numpy.random import choice

def swap_elements(x, t):
    new_x = x[:]
    for idx, value in zip(choice(range(len(x)), size=len(t), replace=False), t_list):
        new_x[idx] = value
    return new_x
Run Code Online (Sandbox Code Playgroud)

用法示例

>>> x_list = ['a', 'b', 'c', 'd', 'e']
>>> t_list = ['z', 'y', 'u']
>>> swap_elements(x_list, t_list)
['y', 'u', 'z', 'd', 'e']
>>> swap_elements(x_list, t_list)
['y', 'b', 'z', 'u', 'e']
>>> swap_elements(x_list, t_list)
['y', 'b', 'z', 'u', 'e']
>>> swap_elements(x_list, t_list)
['a', 'u', 'z', 'y', 'e']
Run Code Online (Sandbox Code Playgroud)