Python中的函数式编程:查找列表中的最小奇数
如果问题陈述说我不能使用for和if,我如何在整数列表中找到最小的奇数 您可以使用Python中的函数式编程:查找列表中的最小奇数,python,algorithm,functional-programming,Python,Algorithm,Functional Programming,如果问题陈述说我不能使用for和if,我如何在整数列表中找到最小的奇数 您可以使用过滤器和min: s = [4, 2, 3, 4, 7, 1] smallest_odd = min(filter(lambda x:x%2 != 0, s)) 输出: 1 为什么要考虑< > > < < /代码>?/p> min(numbers, key=lambda n: (n&1==0, n)) 你可以用 ints = [2,6,8,4,6 ] srt = sorted(ints)
过滤器
和min
:
s = [4, 2, 3, 4, 7, 1]
smallest_odd = min(filter(lambda x:x%2 != 0, s))
输出:
1
为什么要考虑< <代码> > <代码> > <代码> < < /代码>?/p>
min(numbers, key=lambda n: (n&1==0, n))
你可以用
ints = [2,6,8,4,6 ]
srt = sorted(ints)
while len(srt) > 0 and not srt[0] % 2:
srt = srt[1:]
s = None
while len(srt):
s = srt[0]
srt=[]
print(s)
规避规则。您可以对列表进行排序,丢弃前面的偶数值
结果列表为空或前面有值
第二个while仅在列表包含元素且列表重置为空时输入(该值为false,不会租用while)
它将打印“无”或最低的非偶数。您了解什么是函数式编程吗?为什么要限制自己不使用for或if语句?赔率=[i for i in lints if(i%2)==1];min(赔率)@Gary02127-你使用了一个
if
min(过滤器((2)。\uurmod\uul,l))
@PatrickArtner-我想我可以摆脱它,因为它是嵌套的…:)因为它要快很多?将min(如果num%2==0,则num代表num)
与您的解决方案进行比较,您将看到速度提高了两倍/三倍。即使我们在计时环境之外定义了键函数,这仍然是正确的。