在python中检查嵌套列表中的所有元素是否为正数或负数

Eva*_*Kim 1 python nested-lists

我试图使用列表理解来查找元素均为正数的嵌套列表,但我不确定如何表达条件来检查列表理解的嵌套列表中的所有值。

records = [[-167.57, 4.0, 61.875, -100.425],
 [-1.75, 3.75, 4.0],
 [7612.875, 10100.0, 74.25, 1.75, 61.875],
 [-2333.37, -5404.547500000001, -5178.645833333333, 97.0, 167.57],
 [-96.99999999999997, -5277.999999999999, -4998.5, 74.25, 3.75]]

answer = [i for i in records if (n < 0 for n in i)]
answer
Run Code Online (Sandbox Code Playgroud)

我认为这就是我试图将其转换为代码的语句:“如果 i 中的 n 的所有 n > 0,则返回索引 i”

编辑:输出将返回所有正数的相应行的索引

cs9*_*s95 6

你很接近。想象一下您将如何在循环中执行此操作:

for index, row in enumerate(records):
    if all(col > 0 for col in row): 
        print(index)
Run Code Online (Sandbox Code Playgroud)

如果所有元素都为正,则if条件返回True。all现在将其放入列表压缩形式:

answer = [
    index 
    for index, row in enumerate(records) 
    if all(col > 0 for col in row)
]
# [2]
Run Code Online (Sandbox Code Playgroud)

列表推导式是专门为创建列表而设计的 for 循环的优化版本。生成列表的循环和列表理解之间通常存在一对一的转换。当您陷入列表复合语法困境时,我的建议是退后一步,将其想象为一个简单的 for 循环。以下是两个重要的优化规则(这是我大学导师告诉我的):

  1. 不优化
  2. 还没有优化