如何根据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
相关产品推荐
相关产品推荐

