按列表列表排序?

时间:2015-03-05 16:48:40

标签: python list indexing default

所以我有一份清单清单:

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

我希望对它们进行整理。

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

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

将为列表中的每个列表返回一个包含true或false的列表。

示例:[True,False,True,True]

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

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 

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

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

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

2 个答案:

答案 0 :(得分:0)

我能做的最短:

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

但是如果你想让它只返回一个列表(我不确定我是否得到你所要求的),并且对迷你列表的结果使用了真假的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 :(得分:0)

您的代码中的问题是:

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

    您的最终代码应为:

    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