通过列表列表排序?

Sorting through list of lists?

所以我有一个列表列表:

nums = [[98, 90, 91], [46, 76, 62], [85, 90, 83], [77, 79, 81]]

我想对它们进行分类。当

的列表(迷你列表)中的数字

list(main list) 低于我在参数中给出的默认值,函数

将 return 列表中的每个列表都包含 true 或 false。

示例:[对、错、对、对]

到目前为止,这是我的代码:

def all_passing(nums, grade = 70):
 new = [] 
 for l in nums:
    boo = True
    for x in l:
       if x <= grade:
          boo == False
          new.append(boo)
 return new 

每次我 运行 代码,我的输出都是一个空列表。

编辑:我修复了一些问题,现在我离我的解决方案越来越近了,但它是 returning True 或者 列表列表中的每个值都为假。我如何使它只有 returns True 或 对于单个列表为 False。 示例:[98, 90, 91] 将设置为 True。 [46, 76, 62] 将被设置为 False 因为列表中的 x 小于 70。其他列表也是如此。

编辑:我开始工作了,我将附加行缩进到与第二个 for 循环相同的缩进,现在我明白它是如何工作的了。谢谢!!!

我能做的最短时间:

def all_passing(nums, grade = 70):
    return [ [ True if elel > grade else False for elel in el ] for el in nums ]

但是如果你想让它 return 只有一个列表(我不确定我是否得到你的要求)并且对迷你列表的结果进行 True of False dedending,那么我会做

def all_passing(nums, grade = 70):
    ans = [ [ True if elel > grade else False for elel in el ] for el in nums ]
    return [ False if False in el else True for el in ans ]

第二个例子给了我[True, False, True, True],和你预期的差不多。

您的代码中存在的问题是:

  1. boo == False 正在测试 boo 是否等于 false。将其更改为 boo = False 以将 boo 设置为 False
  2. new.append(boo) 仅在 x <= grade 时调用。将其移至 if 语句和 for x in l
  3. 之外

您的最终代码应该是:

def all_passing(nums, grade = 70):
    new = [] 
    for l in nums:
        boo = True
        for x in l:
            if x <= grade:
                boo = False
        new.append(boo)
    return new