Python 带条件的嵌套循环

1 投票
2 回答
3483 浏览
提问于 2025-04-16 05:14
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 非常陌生

2 个回答

1

你也可以这样做:

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)
4
all(variable > element for element in list)

或者对于列表中的列表里的元素 i

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

这样做的好处是,如果有任何一个元素太大,就可以提前退出。这是因为 ... for ... in list 是 Python 强大且多功能的 生成器表达式 的一种形式。它们和 列表推导式 类似,但只在需要的时候才 生成 值。

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

所以第一个语句实际上等同于调用一个像这样的函数

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

不过,通常更喜欢使用生成器表达式,因为它更简洁且更符合“习惯用法”。

撰写回答