我需要替换数组中的字符串。现在我正在使用%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test = test[test.x < 0]
# 54.5 ms ± 2.02 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test.drop(test[test.x > 0].index, inplace=True)
# 201 ms ± 17.9 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%%timeit
test = pd.DataFrame({'x': np.random.randn(int(1e6))})
test = test.drop(test[test.x > 0].index)
# 194 ms ± 7.03 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
- 循环和forEach
,这感觉不是很优雅:
switch
我想要的是用另一个字符串替换元素,或者如果没有匹配则使用原始字符串。
源数组有50个元素,替换数组有30个元素。
答案 0 :(得分:1)
如果您希望对数组进行一对一操作,则首选.map
函数:
return source.map(el => el === 'replace' ? 'with this' : el).join(',');
编辑我看到你已经更新了问题,实际上你有30个不同的字符串要替换。在这种情况下,您应该使用预先填充了“之前”和“之后”字符串的Map
:
let replaceFunc = (function() {
let replace = new Map([
['replace', 'with this']
]);
return source => source.map(el => replace.has(el) ? replace.get(el) : el).join(',');
})();
IIFE用于确保Map
的一次性初始化,并且在Map
上关闭的返回函数被分配给replaceFunc
。
> replaceFunc(['replace']);
"with this"
答案 1 :(得分:1)
map
是另一种选择
var result = source.map(function (e) {
return e === 'replace' ? 'with this' : e;
});
答案 2 :(得分:1)
var sample = ["aaa", "bbb", "replaceMe", "ccc", "ddd"];
var result = sample.map(function(ele, inx) {
if (ele == "replaceMe") {
return "newText";
} else {
return ele;
}
});
console.log(result);
答案 3 :(得分:0)
下面为替换示例示例: -
String originalString = "hello";
String newString = originalString.replace('E', 'x');
System.out.println( newString );
立即参考 - http://javadevnotes.com/java-string-replace-tutorial-and-examples