用reverse()创建一个回文列表

时间:2010-03-04 21:39:09

标签: python

我想要一个列表[0,1,2]并将其转换为[0,1,2,2,1,0]。现在,我已经

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

但似乎应该有更好的方法。谁能想出一个好的,pythonic单线程?

2 个答案:

答案 0 :(得分:3)

看起来你可能需要

mus.extend(reversed(mus))

或者,如果您只是需要迭代此而不一定形成列表,请使用

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

答案 1 :(得分:2)

要做到这一点的很多方法中有几个是:

  1. m = l + reverse(l)
  2. m = l + l [:: - 1]
  3. l.extend(反转(1))
  4. l.extend(L [:: - 1])
  5. 前两个将输出分配给新列表,后两个更新列表。如果我很聪明,我可能会使用2或4,但如果我想要对我正在做的事情没有错误,那么我会选择1或3。

    希望这有帮助。

    编辑: 正如评论中指出的那样,#1不起作用,因为reverse会返回迭代器。您可以通过将其更改为:

    来使其工作

    m = l + list(反向(l))

    但我不能推荐它。改用2来代替。

    顺便说一句,谢谢你的纠正,对不起任何困惑感到抱歉。