使用Python,我希望通过在数千个数字中为少数(简称500)随机选择的数字添加+1或-1来改变列表中的数字。
我熟悉随机数生成器,但不确定我下一步要改变当前数字是什么。
例如,这些是我想编辑的一些数字:
array([-0.5887, -0.3948, 2.7303, -0.4915, -0.2842, 2.7168, -0.6298,
-0.2313, 2.5747, -0.5887, -0.3948, 2.7303, -0.6298, -0.2313,
2.5747, -0.7114, -0.4042, 2.6477, -0.4915, -0.2842, 2.7168,
-0.3596, -0.1205, 2.6922, -0.5133, -0.04 , 2.5177, -0.4915,
-0.2842, 2.7168, -0.5133, -0.04 , 2.5177, -0.6298, -0.2313,
2.5747, -0.3596, -0.1205, 2.6922, -0.2133, 0.0692, 2.6638,
-0.3754, 0.1682, 2.469 , -0.3596, -0.1205, 2.6922, -0.3754,
0.1682, 2.469 , -0.5133, -0.04 , 2.5177, -0.2133, 0.0692,
2.6638, -0.0574, 0.2702, 2.6393, -0.219 , 0.3798, 2.4369,
-0.2133, 0.0692, 2.6638, -0.219 , 0.3798, 2.4369, -0.3754,
0.1682, 2.469 ])
答案 0 :(得分:1)
这是通过numpy
库的一种直接方式。这假设您的数字列表存储在变量lst
中。我建议你浏览每一行,以确保你了解正在发生的事情。
SO和其他地方有大量资源可以帮助您完成旅程。
import pandas as pd, numpy as np
import random
# convert data to numpy array
arr = np.array(lst)
# copy to test you are successful in final step
arr2 = arr.copy()
# get 20 random indices
to_change = random.sample(range(len(arr)), 20)
# increment those indices
arr[to_change] += 1
# check success
(arr != arr2).sum() # 20
答案 1 :(得分:0)
在Python中你可以这样做:
x
即使set()
有300,000个条目并且您正在更改5000个条目,代码也能快速运行。使用in
是获得良好性能的关键,因为这使得使用const dogs = [{"breed":"Labrador","puppies":["Fluffy","Doggo","Floof"]},{"breed":"Rottweiler","puppies":["Biscuits","Mary"]}];
function collectPuppies(dogs) {
const solution = [];
for (let i = 0; i < dogs.length; i++) {
solution.push(...dogs[i].puppies);
}
return solution;
}
console.log(collectPuppies(dogs));
的速度非常快。