取一个数组并返回奇数长度的回文

时间:2017-10-11 14:11:23

标签: python python-2.7

我正在寻找一种Pythonic方法来获取一个数组并返回一个其左侧是输入数组的回文。重要的是回文的长度是奇数,即原始数组中的最后一个元素不会被复制。

我发现的最短路径是:

arr + arr[-2::-1]

但它有点“加密”IMO。

是一个更具可读性的约定还是这个?

谢谢。

用法示例:

a = [1,2,3,4,5,6]
print a+a[-2::-1]

2 个答案:

答案 0 :(得分:3)

你已经拥有的代码很好。它工作正常,并且肯定是pythonic。如果你担心可读性,那么我建议把它放在自己的功能中:

def palindrome(arr):
    return arr + arr[-2::-1]

如果要简化复杂的切片表示法,这基本上是等效的:

result = arr + arr[::-1][1:]

或者,如果你真的想完全摆脱它:

rev = list(reversed(arr))
rev.pop(0)
result = arr + rev
但是,我会使用您的原始代码。

答案 1 :(得分:2)

这实际上是非常Pythonic。 我会这样离开,也许为Python初学者添加评论。

更具可读性

a = [1,2,3,4,5,6]
a.extend(a[-2::-1])
print(a)