如何通过循环将向量自身多次追加以生成新向量
向量重复生成的几种实现方式
嘿,这个需求其实很常见,而且确实有不止一种实现方式——不一定非得用空数组循环3次追加哦,先给你说最简洁的办法,再讲循环的正确姿势!
最简洁的方法:利用语言自带的重复操作
不管你用的是Python、R还是Matlab这类常用的数据分析语言,几乎都有直接重复向量/列表的内置功能,比循环高效多了:
- Python:如果
a是列表的话,直接用乘法运算符就能实现重复:a = [1, 2, 3] b = a * 3 # 结果就是 [1, 2, 3, 1, 2, 3, 1, 2, 3] - R语言:用
rep()函数指定重复次数:a <- c(1, 2, 3) b <- rep(a, 3) - Matlab:可以用
repmat()或者直接拼接:a = [1 2 3]; b = repmat(a, 1, 3); % 或者更直接:b = [a a a];
如果你一定要用循环追加的方式
当然,用循环实现也是完全可行的,但要注意不要用append(Python)或者类似的单元素追加方法,不然会把整个a当成一个元素塞进去,得到嵌套的结构。正确的做法是用“扩展”类的方法:
以Python为例:
a = [1, 2, 3] b = [] # 循环3次,每次把a的元素都追加到b里 for _ in range(3): b.extend(a) # extend会把a的每个元素逐个加入b,而不是把a作为整体加入
这样循环结束后,b就是你想要的扁平向量了。
简单来说,能直接用语言内置的重复功能就尽量用,代码更简洁也更高效;如果一定要用循环,记得选对追加元素的方法,避免嵌套问题~
内容的提问来源于stack exchange,提问作者Nils
相关产品推荐
相关产品推荐

