【问题标题】:Python nested loop with condition带条件的 Python 嵌套循环
【发布时间】:2011-04-23 04:22:24
【问题描述】:
my_list = [[1,2],[1,3],[1,3],[1,3]]
my_var = 7

我的目标是能够查看my_var 是否大于my_list[0][1]my_list[1][1]my_list[2][1] 等处的所有位置。

my_list 的长度可能不同,my_var 的长度也可能不同,所以我认为循环是最好的选择?

*python 新手

【问题讨论】:

    标签: python list loops conditional-statements


    【解决方案1】:
    all(variable > element for element in list)
    

    或者对于列表中的元素i

    all(variable > sublist[i] for sublist in list)
    

    如果任何元素太大,这具有提前踢出的优势。这是因为... for ... in list 是Python 强大而多样的generator expressions 的一个实例。它们类似于list comprehensions,但仅根据需要生成值。

    all 本身只是检查它传递的iterable 中的所有值是否为真。生成器表达式、列表推导、列表、元组和其他类型的序列都是可迭代的。

    所以第一条语句最终等同于调用类似的函数

    def all_are_greater_than_value(list, value):
        for element in list:
            if element <= value:
                return False
        return True
    

    all_are_greater_than_value(list, variable)...

    或者干脆

    all_greater = True
    for element in list:
        if element <= value:
            all_greater = False
            break
    

    但是,生成器表达式通常是首选,更简洁和“惯用”。

    【讨论】:

    • 这是 Python 像英语一样阅读能力的一个很好的例子。
    • 这可能会让你畏缩,但你介意告诉我如何使用原始 for 循环来完成吗?
    • @Dtour:我添加了一些 for 循环示例进行比较。
    【解决方案2】:

    你也可以这样做:

    my_list = [[1,2],[1,3],[1,3],[1,3]]
    my_var = 7
    print all(all(x < my_var for x in sublist) for sublist in my_list)
    

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 2019-11-07
      • 1970-01-01
      • 2015-03-12
      • 2021-08-21
      • 1970-01-01
      • 2019-04-17
      • 2021-12-19
      • 2010-12-21
      相关资源
      最近更新 更多