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

如何遍历列表a对比列表b生成布尔值列表?已尝试方法遇报错

解决列表元素存在性检查的布尔列表生成问题

咱来一步步搞定你的问题!先直接给你能得到预期结果的两种正确写法,再分析你之前出错的原因:

方法一:正确的列表推导式

这是最简洁的写法,直接对每个a中的元素判断是否在b里,返回对应的布尔值:

a = ['A', 'B', 'C', 'D']
b = ['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
c = [i in b for i in a]
print(c)  # 输出: [False, True, True, True]

你之前的列表推导式错误原因

你写的[True for i in a if i in b]是过滤逻辑——它只保留满足i in b的元素,并把它们替换成True,不满足的直接被丢弃了,所以结果只有[True, True, True],少了第一个False,自然不符合预期。

方法二:修正后的嵌套循环写法

你初始化全False列表的思路是对的,但出错在循环时用了字符串元素作为列表索引,导致TypeError。正确的做法是用整数索引来修改列表:

a = ['A', 'B', 'C', 'D']
b = ['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
c = [False] * len(a)  # 初始化全False列表

# 用enumerate同时获取索引和元素
for idx, item in enumerate(a):
    if item in b:
        c[idx] = True

print(c)  # 输出: [False, True, True, True]

你之前的循环错误原因

你大概率写了类似c[i] = True的代码,这里的i是a中的字符串(比如'A'),而列表的索引必须是整数,所以才会抛出TypeError: list indices must be integers, not str的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:33:20