【发布时间】:2021-07-01 10:03:04
【问题描述】:
numbers = [
386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
958,743, 527]
print(list(filter(lambda x: (x%2 == 0 or x == 237) , numbers)))
print(list(filter(lambda x: x if x%2 == 0 else x == 237 , numbers)))
【问题讨论】:
-
也许你可以改用
takewhile。 -
你不需要
lambda。new_l=[x for x in numbers if x%2==0 or x==237] -
有
itertools.takewhile,应该完全符合您的要求。 -
@Sujay:使用列表推导式与跳出循环不同——假设这就是 OP 所说的“跳出过滤功能”。
-
@codingworld:“突破过滤功能”到底是什么意思?