【问题标题】:Invert tuples in a list of tuples反转元组列表中的元组
【发布时间】:2013-03-10 12:03:43
【问题描述】:

我有一个数组[(126,150),(124,154),(123,145),(123,149)](只是数字的一个样本,数组太大而无法显示所有这些),然后我使用imshow 将结果绘制到矩阵上。我想要的是找到数组的倒数所以[(150,126),(154,124),(145,123),(149,123)],然后再做一个imshow

如何反转数组以达到我想要的效果?

【问题讨论】:

  • 您的问题带有numpy 标签。您的数组是否存储为 numpy 数组?另外,您究竟是如何用imshow 绘制的?你能显示你正在使用的代码吗?

标签: python numpy matplotlib


【解决方案1】:
>>> arr = [(126,150),(124,154),(123,145),(123,149)]
>>> reverseArr = [x[::-1] for x in arr]
>>> reverseArr
[(150, 126), (154, 124), (145, 123), (149, 123)]
>>>

【讨论】:

    【解决方案2】:

    如果您不介意迭代器:

    a = [(126,150),(124,154),(123,145),(123,149)]
    
    inverse = map(reversed, a)
    

    如果你想要元组,这里有几个选项:

    inverse = map(tuple, map(reversed, a))
    
    inverse = map(lambda x: (x[1], x[0]), a)
    
    inverse = zip(*reversed(zip(*a)))
    

    通过几个快速测试,我发现列表推导式是处理短列表最有效的方法,而 zip 方法是处理较长列表最有效的方法。

    【讨论】:

    • 不应该是:“如果你不介意迭代”?还是我的概念有误?
    • @Chris Wesseling 元组实际上也是一个可迭代对象。可迭代基本上是可以在for _ in 循环中使用的任何东西。然而,迭代器是具有next() 方法的特定类型的可迭代对象。迭代器是惰性的,为了节省内存,每个值只能检索一次(当next() 被调用时)。
    【解决方案3】:
    array = [(126,150),(124,154),(123,145),(123,149)]
    inversed = [(item[1],item[0]) for item in array]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2011-07-27
      • 2015-02-13
      相关资源
      最近更新 更多