python - 在列表中查找第一个元素和索引匹配条件
问题描述
考虑这个简单的例子
mylist = [-1,-2,3,4,5,6]
for idx, el in enumerate(mylist):
if el > 0:
myidx, myel = idx, el
break
myidx, myel
Out[20]: (2, 3)
我有兴趣在匹配特定条件的python列表中找到第一个索引和相应的第一个元素(这里,这只是> 0)。
在上面的代码中,我使用 if 子句遍历元素enumerate
,然后使用 if 子句查找正确的元素。这对我来说看起来很麻烦。有一个更好的方法吗?例如,使用本机 python 函数?
谢谢!
解决方案
像这样的东西应该工作:
l = [-1,-2,3,4,5,6]
list(x > 0 for x in l).index(True)
# Output: 2
要查找所有模式,我们可以使用 python 内置函数
from itertools import filterfalse
f = filterfalse(lambda x: x[1] <= 0, enumerate(l))
print(list(f))
# [(2, 1), (3, 2), (4, 3)]
推荐阅读
- ggplot2 - 如何按照数字顺序调整 X 轴上的条形?
- windows - 如何隐藏以 std::process::Command 启动的进程的控制台窗口?
- prolog - Prolog - 相等运算符包装
- powershell - Powershell - 数组作为哈希表中的值?
- java - 在 Java 8 中使用 Optional 进行多次空检查
- c - 由于不相关的函数调用,C 字符串被垃圾值填充
- r - 如何将绘图区域限制在精确区域
- powerapps - 错误 429:在 Power Automate 中启动审批错误
- firebase - 什么是 Firebase 存储转移和操作?
- javascript - 使用javascript将数组转换为不同的形状