这是原始代码
def cage_cats(S):
maxtemp = 0
temp = list(set(S))
for i in range(len(temp)-1):
for j in range(len(S)-1):
if temp[i] == S[j]:
if S[j] == S[j+1]:
break
else:
maxtemp = max(S[j], maxtemp)
return maxtemp
下面是我尝试使用不同方法复制上面代码的代码
def cage_cats(S):
temp = list(set(S))
maxtemp = max(
list(
map(
lambda i : (
lambda j : (
S[j] if temp[i] == S[j] and S[j] == S[j+1] else "None"
),range(len(S)-1)
),range(len(temp)-1)
)
)
, 0)
我的代码哪里出错了?我有点迷失了该做什么。有没有一种方法可以使结果与原始代码相同,但仍保留其中的函数式编程部分?
编辑:这段代码是找到不相邻的最大元素。
例如:
[ 1, 1, 2, 2, 5, 3, 3, 5 ]
答案是5
[1, 2, 2, 3, 1, 5, 5, 3 ]
答案是3
[1, 1, 2, 2, 3, 3]
它将是 0(默认值)
输入将始终是偶数,因为我制作的函数不在本文中,并且所有数字将始终是一对
这是仅使用
max
的解决方案。
它的工作原理是将列表中的所有元素与之前和之后的元素进行比较,并检查是否两者都不同
S = [1, 2, 2, 3, 1, 5, 5, 3]
S = ["", *S, ""] # pad with values that you're sure aren't in your list
max(b for a, b, c in zip(S, S[1:], S[2:]) if a != b != c) or 0 # 0 is default value