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)