我有这样的列表: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/