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/

相关文章:

递归 purrr::modify_depth() 不适用于参差不齐的列表

如果存在子字符串,python查找并替换列表项

javascript - 按钮数组的当前索引

vb.net - 数据 GridView ...以编程方式设置选择行索引不会将 CurrentRow.Index 设置为相同?

iphone - sqlite 索引性能建议

python - 创建 HDF5 数据集时出现 "ValueError: Not a location id (Invalid object id)"

python - 使用Python Pandas,仅当 "nan"值不存在时,我可以根据另一列替换 df 中一列的值吗?

python - 在嵌套列表中搜索元素并将其打印出来

python - 将Mat对象转换为标准的12x12矩阵

java - 修改 ""类,以便 toString 方法对列表进行排序