【发布时间】:2017-06-28 18:55:02
【问题描述】:
这是我的清单:
l = [0, 1, 2, 3, 4, 5]
我想交换相邻的元素,所以列表应该是这样的:
l = [1, 0, 3, 2, 5, 4]
我知道有很多解决方案,我想我找到了一个:
def swap(l):
return l[::2], l[1::2] = l[1::2], l[::2]
无论如何我仍然收到此错误:
file.py on line 2
return l[::2], l[1::2] = l[1::2], l[::2]
^
SyntaxError: invalid syntax
非常感谢任何解决此问题的提示或想法。 (在 Python2 上工作)
【问题讨论】:
-
你不能
return一个赋值语句只是一个表达式。鉴于您正在更改l值本身,您可能根本不需要return语句。 -
赋值是语句,不是表达式。它不能被返回,因为它没有计算出一个值。
-
哇你们真快-谢谢,鉴于我想返回列表,有没有办法在不增加一行的情况下做到这一点?
-
注意:您目前只交换前2个元素,交换列表中的所有元素然后您可以使用切片分配(注意:列表需要是偶数长度):
l[::2], l[1::2] = l[1::2], l[::2] -> [1, 0, 3, 2, 5, 4] -
你正在修改你可能想要创建一个新列表并返回它,例如
return [x for pair in zip(*[iter(l)]*2) for x in reversed(pair)]
标签: python list syntax-error swap