Python 带条件的嵌套循环
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
不过,通常更喜欢使用生成器表达式,因为它更简洁且更符合“习惯用法”。