gpt4 book ai didi

python - 在奇数/偶数整数列表中查找奇偶异常值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:42 25 4
gpt4 key购买 nike

我正在尝试查找并返回奇数列表中的单个偶数或偶数列表中的唯一奇数。但是,我的代码有效,如果奇数列表的长度是偶数,它返回列表中的第一个数字而不是偶数。任何帮助表示赞赏。代码如下:

    even = [2, 4, 6, 8, 10, 12, 14, 2091] #2091 is the outlier and len(x) = 8
odd = [1, 3, 5, 7, 9, 11, 13, 4720] #4720 is the outlier and len(x) = 8

def find_outlier(x):
# Determine if list is even and length of list is odd
if sum(x) % 2 != 0 and len(x) % 2 != 0:
for x in x:
if x % 2 != 0:
return x
# Determine if list is even and length of list is even
elif sum(x) % 2 != 0 and len(x) % 2 == 0:
for x in x:
if x % 2 != 0:
return x
# Determine if list is odd and length of list is odd
elif sum(x) % 2 == 0 and len(x) % 2 != 0:
for x in x:
if x % 2 == 0:
return x
# Determine if list is odd and length of list is even (PROBLEM)
elif sum(x) % 2 == 0 and len(x) % 2 == 0:
for x in x:
if x % 2 == 0:
return x

print (find_outlier(even))
print (find_outlier(odd))

以下是根据 Dmitri 的解决方案重新格式化的问题的正确解决方案:

def find_outlier(x):
odd = [i for i in x if i % 2 != 0]
even = [i for i in x if i % 2 == 0]
return odd[0] if len(odd) < len(even) else even[0]

最佳答案

你为什么要关心长度?这是更简单的解决方案:

def find_outliner(a):
if a[0] % 2 != a[1] % 2:
return a[0] if a[2] % 2 == a[1] % 2 else a[1]
for i in a:
if i % 2 != a[0] % 2:
return i

它是如何工作的?

  1. 列表中至少要有三个元素,否则问题没有多大意义
  2. 如果前两个元素的奇偶性不同,则根据第三个判断哪个元素错误(如果第二个和第三个奇偶性相同,则第一个是错误的,否则-第二个是错误的)<
  3. 如果前两个元素具有相同的奇偶性,这意味着第一个(和第二个)元素的奇偶性是列表的正确奇偶性。因此,具有不同奇偶性的元素就是我们要寻找的。

关于python - 在奇数/偶数整数列表中查找奇偶异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089459/

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