如何在Python中反转元组?

可能重复:
在Python中以相反顺序遍历一个列表

这可能吗? 不必到位,只是寻找一种方法来扭转元组,所以我可以反向迭代

  • Python:类和实例属性之间的区别
  • Python SQL查询string格式
  • 如何创build新的文件夹?
  • 我如何删除matplotlib中的顶部和右侧轴?
  • Apache不提供djangopipe理静态文件
  • 如何testing一个Python模块是否已被导入?
  • Python的等价于PHP的内爆吗?
  • Boto3资源和客户端是否相同? 当使用一个或其他?
  • 3 Solutions collect form web for “如何在Python中反转元组?”

    有两种惯用的方法来做到这一点:

     reversed(x) # returns an iterator 

    要么

     x[::-1] # returns a new tuple 

    由于元组是不可变的,因此无法在原地反转元组。


    编辑:build立在@ lvc的评论上,通过reversed返回的迭代器将相当于

     def myreversed(seq): for i in range(len(x) - 1, -1, -1): yield seq[i] 

    即它依赖于具有已知长度的序列来避免实际上反转元组。

    至于哪一个更有效率,如果你使用了所有的元组,而且元组很小,并且在元组很大时reversed ,但是在python中的性能是经常的令人惊讶,所以衡量它!

    您可以使用reversed内置函数。

     >>> x = (1, 2, 3, 4) >>> y = reversed(x) >>> tuple(y) (4, 3, 2, 1) 

    如果你只是想迭代元组,你可以直接使用由reversed返回的迭代器,而不必再次将其转换为元组。

     >>> for k in reversed(x): ... print k, ... 4 3 2 1 

    类似于你将会反转列表的方式,即s [:: – 1]

     In [20]: s = (1, 2, 3) In [21]: s[::-1] Out[21]: (3, 2, 1) 

     In [24]: for i in s[::-1]: ....: print i ....: 3 2 1