我正在寻找一种Pythonic方法来获取一个数组并返回一个其左侧是输入数组的回文。重要的是回文的长度是奇数,即原始数组中的最后一个元素不会被复制。
我发现的最短路径是:
arr + arr[-2::-1]
但它有点“加密”IMO。
是一个更具可读性的约定还是这个?
谢谢。
用法示例:
a = [1,2,3,4,5,6]
print a+a[-2::-1]
答案 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)