【发布时间】:2022-01-05 20:06:26
【问题描述】:
所以我创建了这个带有两个参数的函数(一个带有一个参数和一个列表的函数)。它的目的是遍历列表并在函数的每个实例都为真时返回真(否则返回假)。所以对于我的尝试,我有这个:
def all_iter(func, ls):
i = 0
c = True
for i in ls:
if func(ls[i]) == False:
c = False
break
return c
现在这些是我用来查看它是否正常运行并且应该返回的三个示例:
>>>all_iter(lambda x: x >= 0, [1, 2, 3, 0, 4])
True
>>> all_iter(lambda x: x >= 0, [1, 2, -3, 0, 4])
False
>>> all_iter(lambda x: x % 2 == 0, [100, 10, 2022, 12])
True
现在对于前两个示例,我在运行时得到的结果是正确的,但对于第三个示例,我得到: 在 all_iter 中 如果 func(ls[i]) == 假: IndexError: 列表索引超出范围。有人可以提供一些帮助吗?
【问题讨论】:
-
for循环遍历 值,而不是索引。巧合的是,前两个列表中的每个值也是列表中的有效索引。在前两种情况下,您得到了预期的答案,但您的函数没有工作。if not func(i): -
你为什么要
ls[i]? -
考虑改用
for i in range(len(ls)):吗?要么这样,要么只是做func(i)而不是func(ls[i])。 -
这里没有理由考虑
range(len(ls));索引不感兴趣。 -
@juanpa.arrivillaga 遍历列表的值