Python 随机更改/变异列表中的一个值

Python 随机更改/变异列表中的一个值,python,list,random,genetic-algorithm,Python,List,Random,Genetic Algorithm,我正在写一个遗传算法,想在一个列表中随机变异一个数字 如果我有一个列表,例如: [1,2,3,4,5] [1,2,7,4,5] 如何将列表中的一个数字更改为随机数,例如: [1,2,3,4,5] [1,2,7,4,5] 或 使用和: 编辑:如果你想总是做出改变(也就是说,永远不要让列表保持不变),请考虑用非零值递增项目: >>> mylist[index] += random.choice([1, -1]) * random.randint(1, maxChange)

我正在写一个遗传算法,想在一个列表中随机变异一个数字

如果我有一个列表,例如:

[1,2,3,4,5]
[1,2,7,4,5]
如何将列表中的一个数字更改为随机数,例如:

[1,2,3,4,5]
[1,2,7,4,5]

使用和:

<>编辑:如果你想总是做出改变(也就是说,永远不要让列表保持不变),请考虑用非零值递增项目:

>>> mylist[index] += random.choice([1, -1]) * random.randint(1, maxChange)
使用和:

<>编辑:如果你想总是做出改变(也就是说,永远不要让列表保持不变),请考虑用非零值递增项目:

>>> mylist[index] += random.choice([1, -1]) * random.randint(1, maxChange)

使用
random.randint

l=[1,2,3,4,5]
import random
l[random.randint(0,len(l)-1)]=random.randint(min(l),max(l)-1)
现在:

print(l)
是(每次都不同,这只是第一次输出):


使用
random.randint

l=[1,2,3,4,5]
import random
l[random.randint(0,len(l)-1)]=random.randint(min(l),max(l)-1)
现在:

print(l)
是(每次都不同,这只是第一次输出):

使用:

或者您可以尝试以下方式:

temp_list[random.randint(0, (len(temp_list))-1)] = random.randint(minValue, maxValue)
使用:

或者您可以尝试以下方式:

temp_list[random.randint(0, (len(temp_list))-1)] = random.randint(minValue, maxValue)

对类似问题采取不同的处理方法,我希望这能从不同的角度有所帮助:)

只要我有一个列表,比如混合字符串元素,我就使用枚举和一些随机选择函数(在我的例子中来自Numpy)。e、 g.当我有一个不同原子的列表,我想从中随机选择一种类型的原子,我可以写:

import numpy as np

mixed_atm_list = ["Pb", "C", "H", "Pb", "C", "C", "Sn", "H"]
random_choice_atm = "C"

find_idx = [idx for idx, atm in enumerate(mixed_atm_list) if atm == random_choice_atm]

randomly_selected_carbon_atom = np.random.choice(find_idx)
randomly_selected_carbon_atom = mixed_atm_list[randomly_selected_carbon_atom]

对类似问题采取不同的处理方法,我希望这能从不同的角度有所帮助:)

只要我有一个列表,比如混合字符串元素,我就使用枚举和一些随机选择函数(在我的例子中来自Numpy)。e、 g.当我有一个不同原子的列表,我想从中随机选择一种类型的原子,我可以写:

import numpy as np

mixed_atm_list = ["Pb", "C", "H", "Pb", "C", "C", "Sn", "H"]
random_choice_atm = "C"

find_idx = [idx for idx, atm in enumerate(mixed_atm_list) if atm == random_choice_atm]

randomly_selected_carbon_atom = np.random.choice(find_idx)
randomly_selected_carbon_atom = mixed_atm_list[randomly_selected_carbon_atom]


你试过什么?只需在循环列表中随机选取一个索引并随机选取一个值[random.randint(0,len(list)]=random.randint(0,maxtobedefine)@Alexis这些是numpy的文档。除非OP有一个array@Alexis:
索引器
此外,给变量命名也不是一个好主意
列表
您尝试了什么?只需随机选择一个索引,然后在循环列表中随机选择一个值[random.randint(0,len(list)]=random.randint(0,maxtobedefine)@Alexis这些是numpy的文档。除非OP有一个array@Alexis:
索引器
此外,将变量命名为
列表
也不是一个好主意,这将给出一个
索引器
,如
random.randint(a,b)
生成一个介于
a
b
之间的数字。肯定是的!:-)你介意解释一下每一位都在做什么吗?l[random.randint(0,len(l)-1)]=random.random.randint(min(l),max(l)-1@Perry抱歉回复晚了,好的,第一部分是
l[random.random.randint(0,len(l)-1)
获取列表的随机索引,然后将该列表的索引分配给..,现在是第二部分分配第一部分的值,
random.randint(min(l),max(l)-1)
它获取最小值和最大值之间的随机值。这将给出一个
索引器,如
random.randint(a,b)
生成一个介于
a
b
之间的数字。肯定是的!:-)你介意解释一下每一位都在做什么吗?l[random.randint(0,len(l)-1)]=random.random.randint(min(l),max(l)-1@Perry抱歉回复晚了,好的,第一部分是
l[random.random.randint(0,len(l)-1)
获取列表的随机索引,然后将该列表的索引分配给..,现在是分配第一部分值的第二部分,
random.randint(最小(l),最大(l)-1)
这是一个介于最小值和最大值之间的随机值。如果
minVal
maxVal
的范围是例如:1,10,那么也有可能返回相同的列表
mylist
@Austin作为GA,我实际上可能会为了保持随机性而接受这种可能性在池中(并非所有内容都必须更改)但这是一个公平的观点:)轶事,但我通常发现在紧循环中接受空交换比避免更快it@roganjosh,如果射程很小的话,可能性更大;我认为你不能忽视这一点,因为我相信一些替代品可以解决这个问题。@Austin:好的,我添加了第二个例子,说明总是做一个change@Austin魔鬼代言人;如果范围很小,收敛速度无论如何都会很快。你最好挤出额外的“世代”在中。如果你可以通过接受副本而不是强制更改的副本来获得3次迭代……无论如何,编辑现在涵盖了这两个方面:)如果
minVal
maxVal
范围是例如:1,10,那么这也有可能返回相同的列表
mylist
@Austin作为一个GA,我实际上可能会吃到它为了保持池中的随机性,t可能性(并非所有事情都必须改变)但这是一个公平的观点:)轶事,但我通常发现在紧循环中接受空交换比避免更快it@roganjosh,如果射程很小的话,可能性更大;我认为你不能忽视这一点,因为我相信一些替代品可以解决这个问题。@Austin:好的,我添加了第二个例子,说明总是做一个change@Austin魔鬼代言人;如果范围很小,收敛速度无论如何都会很快。你最好挤进额外的“代”。如果你可以通过接受重复而不是强制更改的重复来获得3次迭代……无论如何,编辑现在涵盖了这两个方面:)什么是
索引
?:)什么是
索引
?:)