提问人:Fernando Chueca 提问时间:11/15/2023 最后编辑:CribberFernando Chueca 更新时间:11/15/2023 访问量:27
typeError:列表索引必须是整数或切片,而不是 if 语句列表推导式中的列表
typeError: list indices must be integers or slices, not list in if statement list comprehension
问:
我有一个名为的列表,其中每个元素由 2 个元素的列表组成。我想删除列表列表中在其列表的第二个索引中具有值的元素。records
b
为此,我正在尝试使用列表推导:
records = [i for i in records if records[i][1] != b]
但是我得到一个 TypeError:list indices must be integers or slices
我该如何解决这个问题?
答:
1赞
Yan Tavares
11/15/2023
#1
答:
你好!在您提供的代码中,存在对列表推导式执行的操作的误解。当你写类似的东西时
[i for i in list ...
或
for i in list:
...
“i”表示值本身,而不是其索引。
例如,如果我要写
for i in ["foo", "bar"]:
print(i)
我会得到输出
"foo"
"bar"
知道了这一点,我们可以修改您的代码,使其正常工作
records = [i for i in records if i[1] != b]
此代码的用途:
它遍历记录数组中的每个元素,并检查数组的索引 1 是否与 b 不同。如果是这样,它会将元素追加到新的结果列表中,然后将该列表重新分配给变量。records
如果您有任何问题,请随时与我联系!
关于您的问题的提示:
您应该尝试通过添加语言 (Python)、版本以及一些最小的示例来正确理解问题,从而在您的问题中更具描述性。record
关于列表理解的提示:
如果你是编程的新手,我会避免关注它们,因为(在我看来)你应该首先关注基础知识,而且列表推导的抽象水平相当高,因为它在引擎盖下做了很多事情。干杯!如果这能解决您的问题,请告诉我:)
评论