具有双重条件的Python函数

时间:2016-03-15 22:00:46

标签: python assertion

我想创建一个函数,返回奇数位置列表元素或列表的负元素。

我的解决方案适用于第一个断言,但第二个产生AssertionError,因为返回[-1,-2,1]而不是[-1,-2]。有什么建议吗?

def solution(input):
  output = []
  for item in input: 
    if item < 0:
        output.append(item)
    elif not item % 2 == 0:
        output.append(item)
  return output

assert solution([0,1,2,3,4,5]) == [1,3,5]
assert solution([1,-1,2,-2]) == [-1,-2]

3 个答案:

答案 0 :(得分:5)

您希望奇数位置上的数字,但您的%检查是检查列表中的实际值而不是它们的位置。

尝试使用enumerate在迭代列表时获取索引值:

def solution(input):
  output = []
  for ix, item in enumerate(input): 
    if item < 0 or ix % 2 != 0:
        output.append(item)
  return output

答案 1 :(得分:0)

另外,为了完整起见,您可以考虑将其添加到现有代码中:

    if any(i < 0 for i in output):
            return [i for i in output if i < 0]

,因为它测试是否存在负数并且仅返回那些负数。然而,从我的观点来看,HumphreyTriscuit的答案是更好的解决方案。

答案 2 :(得分:0)

定义解决方案功能的一行:

document.getElementById("box").removeChild(imgC);