Python:如何使用循环仅访问列表中的某些 boolean 元素?

标签 python list indexing boolean

我有这样的列表:listvalues = [True, True, False, True, False, 24, somestring, 50] 所以列表的前五个元素是 boolean 值,其余的是字符串和整数。 现在我想检查前五个元素是否为真或为假,如果它们为真, 我想根据元素的索引使用某种方法。 因此,在上述情况下,应该对第一个元素(索引 0)执行一个操作,然后对第二个元素(索引 1)执行另一个操作,然后对第四个元素执行另一个操作。 如果所有 boolean 值都为假,则应出现警告。 很抱歉提出了菜鸟问题,但我自己找不到一个简短而简单的解决方案......

最佳答案

有很多事情可能会有所帮助。首先,您应该使用列表切片来隔离 boolean 值。如果您知道前 5 个元素是您想要的,那么 myList[0:5] 将只获取这些元素并忽略其他元素。

接下来,查看 any 函数。如果任何元素为 True,它将返回 True,因此您可以这样做来决定是否需要发出警告:

if not any(myList[0:5]):
  # Code here to issue the warning.

接下来,要处理要调用的函数,您可能需要这样的东西:

funcList = [f0, f1, f2, f3, f4]
for idx, test in enumerate(myList[0:5]):
  if test: funcList[idx]()

理想情况下,如果您想跳过该函数,最好将原始列表中各个函数的引用(而不是 boolean 值)放入 None 值中,效果可能会更好。您的原始列表最终将如下所示:

myList = [f1, f2, None, f3, None, 24, "string", 50]

要调用您想调用的人,您可以这样做:

for func in myList[0:5]:
  if func is not None: func()

关于Python:如何使用循环仅访问列表中的某些 boolean 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568242/

相关文章:

c# - 在没有自动 setter / getter 的情况下在 C# 中设置列​​表项

encryption - Solr配置,加密数据配置文件

java - 数组索引越界 - Java

python - 在列表列表中查找项目的索引

索引创建作业的mongodb状态

python - 如何使其仅在满足我的强制条件时才显示

python - 从图像 RGB 值列表中删除 [255,255,255] 条目

python - callable(obj) 是否尝试调用?

python - 调整 ctypes 数组的大小

c# - 如何从列表中删除连续的重复项