如何迭代数组并在每次迭代中修改元素?(指定索引置1示例)
实现数组迭代并按需求修改元素的几种方法
嘿,这个需求其实挺清晰的——就是要遍历数组的每个索引,每次只把当前索引的元素设为1,其他全置0对吧?我来给你分享几种实用的实现方式,不管你用Python还是JavaScript都能直接用:
方法1:Python 生成新数组(简单直观)
如果不需要复用原数组,每次生成新数组是最省心的方式,代码一眼就能看懂:
def iterate_array(n): for i in range(n): # 先搞一个全0的数组,再把第i个位置改成1 arr = [0] * n arr[i] = 1 print(arr) # 测试一下长度为4的情况 iterate_array(4)
运行后就会输出你要的序列:
[1, 0, 0, 0] [0, 1, 0, 0] [0, 0, 1, 0] [0, 0, 0, 1]
方法2:Python 原地修改(节省内存)
要是数组长度特别大,不想频繁创建新数组,那就复用同一个数组,每次先把所有元素重置为0,再改目标位置:
def iterate_array_in_place(n): arr = [0] * n for i in range(n): # 先把所有元素变回0 for j in range(n): arr[j] = 0 # 再把当前索引设为1 arr[i] = 1 print(arr) iterate_array_in_place(4)
这种方式内存开销更小,适合处理大数据量的场景。
方法3:JavaScript 实现(两种思路)
生成新数组版本
function iterateArray(n) { for (let i = 0; i < n; i++) { // 用fill快速创建全0数组,再修改对应索引 const arr = Array(n).fill(0); arr[i] = 1; console.log(arr); } } // 测试 iterateArray(4);
原地修改版本
function iterateArrayInPlace(n) { const arr = Array(n).fill(0); for (let i = 0; i < n; i++) { // 一行代码重置所有元素为0 arr.fill(0); // 设置当前索引为1 arr[i] = 1; console.log(arr); } } iterateArrayInPlace(4);
小提示
- 如果你的需求不是打印,而是要把这些数组收集起来返回,只需要把
print/console.log换成把数组加到一个列表里就行。 - 其他语言比如Java、C++的思路也完全一样:要么每次新建数组赋值,要么复用数组先重置再修改目标位置。
内容的提问来源于stack exchange,提问作者Luis Garcia
相关产品推荐
相关产品推荐

