如何在Python列表中返回第一个非负列表的索引?

Jon*_*han 2 python

期望的输出是第一个非负列表的索引.

说我嵌套了下面的数字列表.我试图弄清楚如何删除否定列表的值或只返回列表中所有值为正的索引.

我的想法是枚举或循环一个函数,该函数检查列表是否具有负值,然后从列表列表中弹出或删除

或者我是否使用列表理解?

# pseudocode
x = [[-1, -2, -1], [-1, -3, -1], [1, 2, 2]]
index_x = [x.index(non_negative(x)) for x in data]
print(index_x)
# 2 
Run Code Online (Sandbox Code Playgroud)

jpp*_*jpp 5

您可以使用next生成器表达式和enumerate+ all.您的逻辑等同于查找包含所有非负值的第一个子列表的索引.

x = [[-1, -2, -1], [-1, -3, -1], [1, 2, 2]]

res = next((idx for idx, sub in enumerate(x) if all(i >= 0 for i in sub)), None)

# 2
Run Code Online (Sandbox Code Playgroud)

列表推导仅在您希望提取与条件匹配的所有子列表的索引时才有用.内置next函数从iterable中检索第一个值.如果未找到子列表,则None返回指定的子列表.