python反向函数和布尔值错误

时间:2015-01-11 17:59:03

标签: python boolean reverse

我编写了一个函数,从一个列表中生成两个列表的元组。一个列表包含第二个,第四个和第五个值,另一个列表包含所有剩余值。我还有一个条件,如果reverse = True,列表的值将在返回时反转。

def seperate(x, reverse=False):

    xs = []
    ys = []
    for i in range(0, len(x), 2):
            xs.append(x[i])
            ys.append(x[i + 1])
    return (xs, ys)
    if reverse is True:
            x = xs.reverse()
            y = ys.reverse()
    return(x, y)

由于某种原因,当reverse为True时,列表不会被反转,它们与reverse为False时相同

3 个答案:

答案 0 :(得分:2)

reverse = True无效的原因是您在支票前有return语句:

return (xs, ys)

永远不会执行return语句之后的代码。

此外,reverse()会撤消列表并返回None,因此xy将最终成为None

以下是两个问题的解决方法:

if reverse:
        xs.reverse()
        ys.reverse()
return (xs, ys)

最后,您可以使用切片而不是显式循环来提取奇数/偶数元素:

In [7]: x = [1, 2, 3, 4, 5, 6, 7, 8]

In [8]: x[::2]
Out[8]: [1, 3, 5, 7]

In [9]: x[1::2]
Out[9]: [2, 4, 6, 8]

答案 1 :(得分:0)

reverse()不会返回任何值。它反转了列表。因此,反向列表位于xsys

http://www.tutorialspoint.com/python/list_reverse.htm

在执行if声明之前,您还要返回。

答案 2 :(得分:0)

return (xs, ys)
if reverse is True:

在函数中,return之后一切都无效。这就是为什么你的if声明不起作用的原因。它在return之后使一切无效。你可以想象它;

def wr():
    x="hey"
    y="Hello"
    return x
    return y
print (wr())

与此类似,此函数仅写入hey,因为它返回一次而其他return y无效。