我有一個數組[(126,150),(124,154),(123,145),(123,149)]
(只是數字的一個樣本,數組太大而不能顯示所有元素),然後我使用imshow
將結果繪製到矩陣。我想要的是找到數組的倒數[(150,126),(154,124),(145,123),(149,123)]
,然後再做另一個imshow
。在元組列表中反轉元組(Python)
如何反轉數組使其達到我想要做的?
我有一個數組[(126,150),(124,154),(123,145),(123,149)]
(只是數字的一個樣本,數組太大而不能顯示所有元素),然後我使用imshow
將結果繪製到矩陣。我想要的是找到數組的倒數[(150,126),(154,124),(145,123),(149,123)]
,然後再做另一個imshow
。在元組列表中反轉元組(Python)
如何反轉數組使其達到我想要做的?
array = [(126,150),(124,154),(123,145),(123,149)]
inversed = [(item[1],item[0]) for item in array]
>>> 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)]
>>>
如果你不介意的迭代器:
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方法對長列表最有效。
迭代器+1,懶惰eval FTW – 2013-03-10 12:13:02
不應該是:「如果你不介意iterables」?或者我的理念錯了? – 2013-03-10 12:24:12
@Chris Wesseling元組實際上也是可迭代的。迭代器基本上可以用在'for _in'循環中的任何東西。然而,迭代器是一個具有'next()'方法的特定類型的迭代器。迭代器很懶,爲了節省內存,每個值只能被調用一次(當調用next()時)。 – grc 2013-03-10 12:35:38
你的問題有'numpy'標籤。你的數組是否存儲爲一個numpy數組?另外,你是怎麼用'imshow'來繪製這個圖的?你能顯示你使用的代碼嗎? – 2013-03-10 12:39:05