Python:列表中的随机变化(变异)

时间:2018-11-22 09:44:22

标签: python list random genetic-algorithm

我正在编写一种遗传算法,想对列表中的数字进行随机变异。

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

[1,2,3,4,5]

如何获取列表并将仅其中一个数字更改为随机数字,例如:

[1,2,7,4,5]

[1,3,3,4,5]

任何帮助将不胜感激:)

4 个答案:

答案 0 :(得分:3)

使用random.randrangerandom.randint

>>> import random
>>> index = random.randrange(len(mylist))
>>> mylist[index] = random.randint(minVal, maxVal)

编辑:如果要始终进行更改(即永远不要保留列表不变),请考虑将项目递增非零值:

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

答案 1 :(得分:1)

使用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)

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

[1, 4, 3, 4, 5]

答案 2 :(得分:0)

使用random.randint

import random
temp_list = [1,2,3,4,5]
temp_list[index_of_list] = random.randint(minValue, maxValue)

或者您可以尝试:

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

答案 3 :(得分:0)

对类似问题采取不同的方法,希望对不同的观点有所帮助:)

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

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]