【问题标题】:pythonic way to flip a list/tuple [duplicate]翻转列表/元组的pythonic方法[重复]
【发布时间】:2017-09-12 05:32:12
【问题描述】:

“翻转”列表/元组的最 Python 方式是什么。

我所说的翻转的意思是:如果你有一个元组的元组,你可以使用像 tuple[a][b] 这样的语法,“翻转”它,这样你就可以做 tuple[b][a]获得相同的物品。

一个例子:

t = [
    [1, 2, 3]
    [4, 5, 6]
]

flipped(t) = [
    [1, 4]
    [2, 5]
    [3, 6]
]

【问题讨论】:

  • 请注意,这是一个列表列表,您没有任何元组。
  • @jonrsharpe 哎呀。这并不重要,但感谢您指出这一点。

标签: python arrays list tuples


【解决方案1】:

zip 就是这样;使用 zip,您可以逐列获取元素(如果您有矩阵),这将翻转/转置它:

list(zip(*t))
# [(1, 4), (2, 5), (3, 6)]

【讨论】:

  • 最好为您的答案提供描述。
【解决方案2】:

这叫做转置。

>>> t = [
...     [1, 2, 3],
...     [4, 5, 6]
... ]
>>> zip(*t)
[(1, 4), (2, 5), (3, 6)]
>>> map(list, zip(*t))
[[1, 4], [2, 5], [3, 6]]

如果 t 是 NumPy array,则它们具有返回转置的属性 T

>>> import numpy as np
>>> np.array(t)
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.array(t).T
array([[1, 4],
       [2, 5],
       [3, 6]])

【讨论】:

  • 感谢您告诉我它叫什么!
  • 这似乎不适用于tuples ?
  • 它已经过测试,适用于元组列表和列表元组,尽管 zip 调用需要包装在 Python 3 的列表调用中。即 list(zip(*seq)) 与其他答案一样.
猜你喜欢
  • 1970-01-01
  • 2011-12-11
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-02-11
  • 2014-06-13
  • 2012-08-02
相关资源
最近更新 更多