如何将数组A的元素复制并重复多次,生成扩展后的新数组B?
数组元素重复扩展实现方案
下面提供几种主流编程语言的实现方式,核心逻辑都是遍历原数组的每个元素,将其重复指定次数(这里是4次)后添加到目标数组中:
Python 实现
利用列表推导式快速生成目标数组:
A = ['i1', 'i2', 'i3'] B = [item for item in A for _ in range(4)] print(B) # 输出: ['i1', 'i1', 'i1', 'i1', 'i2', 'i2', 'i2', 'i2', 'i3', 'i3', 'i3', 'i3']
通过嵌套循环的列表推导,先遍历原数组的每个元素,再将每个元素重复4次加入新列表。
JavaScript 实现
提供两种简洁的实现方式:
const A = ['i1', 'i2', 'i3']; // 方法1:使用 flatMap 自动扁平化数组 const B = A.flatMap(item => Array(4).fill(item)); // 方法2:map 生成重复数组后展开合并 const B2 = [].concat(...A.map(item => Array(4).fill(item))); console.log(B); // 输出: ['i1', 'i1', 'i1', 'i1', 'i2', 'i2', 'i2', 'i2', 'i3', 'i3', 'i3', 'i3']
flatMap会将每个元素映射为包含4个自身的数组,同时自动将嵌套数组扁平化;- 第二种方法先通过
map为每个元素生成重复数组,再用扩展运算符展开后合并。
Java 实现
可以用Stream流简化代码,也可以用传统循环:
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class ArrayExpand { public static void main(String[] args) { List<String> A = List.of("i1", "i2", "i3"); // 方法1:Stream 流实现 List<String> B = A.stream() .flatMap(item -> List.of(item, item, item, item).stream()) .collect(Collectors.toList()); // 方法2:普通循环实现 List<String> B2 = new ArrayList<>(); for (String item : A) { for (int i = 0; i < 4; i++) { B2.add(item); } } System.out.println(B); // 输出: [i1, i1, i1, i1, i2, i2, i2, i2, i3, i3, i3, i3] } }
- Stream流通过
flatMap将每个元素转换为包含4个自身的流,再收集为列表; - 循环方法直接遍历原数组,每个元素重复添加4次到目标列表。
C# 实现
借助LINQ或循环实现:
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<string> A = new List<string> { "i1", "i2", "i3" }; // 方法1:LINQ 的 SelectMany 合并序列 List<string> B = A.SelectMany(item => Enumerable.Repeat(item, 4)).ToList(); // 方法2:普通循环实现 List<string> B2 = new List<string>(); foreach (string item in A) { for (int i = 0; i < 4; i++) { B2.Add(item); } } Console.WriteLine(string.Join(", ", B)); // 输出: i1, i1, i1, i1, i2, i2, i2, i2, i3, i3, i3, i3 } }
SelectMany会将每个元素重复4次的序列合并为一个连续序列;- 循环方法逻辑直观,遍历每个元素并重复添加。
内容的提问来源于stack exchange,提问作者Ronald
相关产品推荐
相关产品推荐

