Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用其他列表元素随机替换列表元素?_Python_List_Random_Replace - Fatal编程技术网

Python 如何用其他列表元素随机替换列表元素?

Python 如何用其他列表元素随机替换列表元素?,python,list,random,replace,Python,List,Random,Replace,我想用x\u列表的元素“随机”替换t\u列表的元素。我研究并尝试了一些东西,但是replace()对列表不起作用。比如,x_new0=['a','z','c','y','u],x_new1=['z','y','c','d','u']。如何执行此操作?您可以使用numpy.random.choice随机选择要在原始列表中进行替换的元素。然后zip根据要用于替换的值创建索引,并应用替换 x_list = ['a', 'b', 'c', 'd', 'e'] t_list = ['z', 'y', 'u

我想用
x\u列表的元素“随机”替换
t\u列表的元素。我研究并尝试了一些东西,但是
replace()
对列表不起作用。比如,
x_new0=['a','z','c','y','u]
x_new1=['z','y','c','d','u']
。如何执行此操作?

您可以使用
numpy.random.choice
随机选择要在原始列表中进行替换的元素。然后
zip
根据要用于替换的值创建索引,并应用替换

x_list = ['a', 'b', 'c', 'd', 'e']
t_list = ['z', 'y', 'u']
示例用法

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

您可以使用
random
模块并使用
random.randint()
方法生成一个介于1和100之间的随机数作为正面和反面抛硬币,以决定是否替换该值,然后使用第二个列表上的
random.choice()
方法返回列表中的随机元素

>>> 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']

您可以选择一个列表的随机索引和另一个列表的随机索引,并在一个列表的索引处获取值,然后将其放置在另一个列表的索引处。例如:

import random

first = ['a', 'b', 'c', 'd', 'e']
second = ['z', 'y', 'u']

print(first)

for index, x in enumerate(first):
    if random.randint(0, 1):
        first[index] = random.choice(second)

print(first)

First run stdout:
>> ['a', 'b', 'c', 'd', 'e']
>> ['y', 'z', 'u', 'y', 'y']

Second run stdout:
>> ['a', 'b', 'c', 'd', 'e']
>> ['a', 'u', 'c', 'u', 'y']
或者,您只能计算一个随机索引,然后使用
random从另一个列表中随机选择一个元素。选择(b)
例如:

from random import randint

a = [1 ,2, 3, 4]
b = [5, 6, 7, 8]

RandomIndexA = randint(0, len(a) - 1)
RandomIndexB = randint(0, len(b) - 1)

a[RandomIndexA] = b[RandomIndexB]

您可以直接分配元素,例如,
x\u list[2]=t\u list[0]
a)新列表中包含
t\u list
的所有元素,以及b)这些元素是否有序?请显示您的尝试是否重要?你试过什么?什么不起作用?你能提供一份你的问题的报告吗?这是按职位还是按价值?如果在
x_列表中有另一个
a
,它被替换为
z
-是否所有值都被
z
替换?如果两个列表的长度相同,则直接替换是正确答案。如果
x
中的元素少于
t
。。。
t
的元素是否必须按顺序出现在
x
中。。。等…?它替换了第一个列表中的所有元素,他可能不想@AK47它只是替换了所有元素,如果“正面和反面”每次都返回true,这允许重复替换她从未指定他不想要重复,允许重复意味着解决方案更“随机”,因为有更多可能的结果,而且他的第二个列表比第一个列表小。交换元素(x,t)中的t\u列表应该是t吗?或者你必须通过原始的t_列表?
from random import randint, choice

a = [1 ,2, 3, 4]
b = [5, 6, 7, 8]

RandomIndex = randint(0, len(a) - 1)

a[RandomIndex] = choice(b)