使用reverse()创建回文列表

1 投票
2 回答
685 浏览
提问于 2025-04-15 20:01

我想把一个列表 [0,1,2] 变成 [0,1,2,2,1,0]。现在我有了

r = list(mus)
r.reverse()
mus = mus + r

但我觉得应该有更好的方法。有没有人能想出一个简单又优雅的 Python 一行代码来实现这个?

2 个回答

2

这里有几种方法可以做到这一点:

  1. m = l + reversed(l)
  2. m = l + l[::-1]
  3. l.extend(reversed(l))
  4. l.extend(l[::-1])

前两种方法是把结果放到一个新的列表里,而后两种方法则是直接在原来的列表上进行更新。如果我想显得聪明点,我可能会选择第二种或第四种,但如果我想让别人清楚我在做什么,我会选择第一种或第三种。

希望这对你有帮助。

补充说明:

正如评论中提到的,第一种方法是行不通的,因为reversed返回的是一个迭代器。你可以通过改成以下方式来让它工作:

m = l + list(reversed(l))

但我不推荐这种方法。还是用第二种比较好。

顺便说一下,感谢指正,抱歉造成了任何困惑。

3

看起来你可能需要这个

mus.extend(reversed(mus))

或者如果你只是想遍历这个,而不一定要形成一个列表,可以使用

import itertools
for item in itertools.chain(mus, reversed(mus)):
    do_something...

撰写回答