gpt4 book ai didi

可选范围内的 Python 过滤器数字(少用 if-else)

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:42 24 4
gpt4 key购买 nike

我想从下限和上限范围内的数字列表中选择元素,每个元素都是可选的。对于所有可能的情况,我可以将它写成一系列的 if 和 else。能不能减少这些分支,写得简洁些?

def select_within_bounds(li, lower=None, upper=None):
if lower is None:
if upper is None:
return li
else:
return [v for v in li if v <= upper]
else:
if upper is None:
return [v for v in li if v >= lower]
else:
return [v for v in li if lower <= v <= upper]

#example:
my_list = [1, 4, 5, 3, 6, 9]
print(select_within_bounds(my_list))
print(select_within_bounds(my_list, 3, 8))
print(select_within_bounds(my_list, lower=3))
print(select_within_bounds(my_list, upper=8))
print(select_within_bounds(my_list, lower=3,upper=8))

#results in
[1, 4, 5, 3, 6, 9]
[4, 5, 3, 6]
[4, 5, 3, 6, 9]
[1, 4, 5, 3, 6]
[4, 5, 3, 6]

最佳答案

def select_within_bounds(li, lower=float('-inf'), upper=float('inf')):
return [v for v in li if lower <= v <= upper]

关于可选范围内的 Python 过滤器数字(少用 if-else),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38538386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com