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

如何用Python循环构建关联Plotly轨迹可见性的布尔嵌套列表

构建Plotly轨迹可见性的布尔组合列表

我明白你想要生成一组布尔列表,让list_true块对应blocks的索引位置,其余位置用list_false填充——正好对应Plotly轨迹逐个显示的需求对吧?这里有两种直观的实现方式:

基础循环实现(易读性高)

先定义好你的基础列表:

import numpy as np

list_true = list(np.ones(3, dtype=bool))
list_false = list(np.zeros(3, dtype=bool))
blocks = [1,2,3]

然后通过两层循环生成目标组合:外层循环控制list_true块的位置,内层循环拼接每个块:

combinations = []
# 遍历每个要放置list_true的位置索引
for target_idx in range(len(blocks)):
    current_combo = []
    # 遍历所有块的位置
    for block_idx in range(len(blocks)):
        if block_idx == target_idx:
            current_combo.extend(list_true)
        else:
            current_combo.extend(list_false)
    combinations.append(current_combo)

简洁列表推导式(代码更紧凑)

如果你喜欢更简洁的写法,可以用嵌套列表推导式结合sum()来拼接:

combinations = [
    sum(
        [list_true if j == i else list_false for j in range(len(blocks))],
        []  # 用空列表作为初始值来拼接所有子列表
    )
    for i in range(len(blocks))
]

验证结果

运行后,你可以通过以下代码查看生成的组合:

for num, combo in enumerate(combinations, 1):
    print(f"combination{num} = {combo}")

输出完全符合你的预期:

combination1 = [True, True, True, False, False, False, False, False, False]
combination2 = [False, False, False, True, True, True, False, False, False]
combination3 = [False, False, False, False, False, False, True, True, True]

而且这个逻辑是通用的——哪怕你后续修改blocks的长度(比如变成4个块),代码也能自动生成对应数量的组合,不需要调整核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:15:23