使用reverse()创建回文列表
我想把一个列表 [0,1,2]
变成 [0,1,2,2,1,0]
。现在我有了
r = list(mus)
r.reverse()
mus = mus + r
但我觉得应该有更好的方法。有没有人能想出一个简单又优雅的 Python 一行代码来实现这个?
2 个回答
2
这里有几种方法可以做到这一点:
- m = l + reversed(l)
- m = l + l[::-1]
- l.extend(reversed(l))
- 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...