You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将布尔数组所有值设为TRUE?有无无需循环的优雅实现方案?

把布尔数组全设为True/False的优雅实现

嘿,这个问题我太懂了!要把布尔数组里的所有值都设为true(或false),还不想写烦人的for循环,确实有不少优雅又高效的办法,我按几种常用编程语言给你拆解下:

Python

如果是普通的列表数组,最简单的方式是直接生成新数组:

# 假设原数组是arr
arr = [True] * len(arr)

要是用NumPy处理更大型的数组,用full方法性能更优:

import numpy as np
arr = np.full(len(arr), True, dtype=bool)

如果想直接修改原列表而不是生成新的,可以用列表推导式(写法简洁,底层优化过):

arr = [True for _ in arr]

Java

Java标准库直接提供了Arrays.fill方法,专门用来批量填充数组,一行搞定修改原数组:

import java.util.Arrays;

// 假设原布尔数组是boolean[] arr
Arrays.fill(arr, true);

这个方法底层做了针对性优化,比手动写for循环效率更高,代码也更干净。

JavaScript

ES6及以上版本支持Array.fill方法,直接修改原数组:

// 原数组arr
arr.fill(true);

如果想生成一个新的全true布尔数组,也可以用Array.from:

const newArr = Array.from({ length: arr.length }, () => true);

C#

在.NET Core 3.0及以上版本,直接用Array.Fill修改原数组:

// 原布尔数组bool[] arr
Array.Fill(arr, true);

要是用的是老版本.NET,可以用Enumerable.Repeat生成新数组:

using System.Linq;

bool[] newArr = Enumerable.Repeat(true, arr.Length).ToArray();

补充说明

你之前用“重新初始化数组为全TRUE”的方式其实已经很优雅了!如果你的场景允许生成新数组而不是修改原数组,这种方式完全没问题。而上面提到的fill类方法更适合需要修改原数组的场景,它们底层大多是用内存批量操作实现的,性能比手动循环好很多,代码可读性也更强。

内容的提问来源于stack exchange,提问作者Teodor Ciuraru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:03:09