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

如何根据binaryList中值为1的索引匹配提取binaryWeight对应元素到新列表

问题修复与实现方案

你的代码存在几个关键问题,直接导致功能无法实现:

  • while循环中仅获取了输入的digit,但没有将其添加到binaryList中,导致列表始终为空,后续循环无法执行
  • for循环里的判断条件错误,你误将索引i和1比较,应该判断binaryList[i]是否等于1
  • 缺少用于存储结果的空列表

下面是修复并优化后的完整代码:

binaryList = []
binaryWeight = [128, 64, 32, 16, 8, 4, 2, 1]
result = []  # 存储最终提取的权重

# 完善输入逻辑,确保输入的是0或1,且凑够8个元素
while len(binaryList) < 8:
    try:
        digit = int(input('Please enter digit (0 or 1): '))
        if digit in (0, 1):
            binaryList.append(digit)
        else:
            print("请输入0或1!")
    except ValueError:
        print("请输入有效的整数!")

# 筛选对应权重的两种实现方式

# 方式一:普通for循环
for i in range(len(binaryList)):
    if binaryList[i] == 1:
        result.append(binaryWeight[i])

# 方式二:更简洁的列表推导式(推荐)
# result = [binaryWeight[i] for i, val in enumerate(binaryList) if val == 1]

print("提取的权重列表:", result)

代码说明

  • 输入部分增加了异常处理和输入校验,避免用户输入非0/1的内容导致程序出错
  • 两种筛选方式任选其一即可,列表推导式更简洁高效
  • 最终result列表就是你需要的,包含所有binaryList中元素为1对应的binaryWeight元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:05:15