如何使用元組
回答
你想做元素明智的添加,或追加元組?默認情況下,Python做
(1,2)+(3,4) = (1,2,3,4)
你可以定義自己爲:
def myadd(x,y):
z = []
for i in range(len(x)):
z.append(x[i]+y[i])
return tuple(z)
此外,作爲@ delnan的評論清楚,這是更好地寫成
def myadd(xs,ys):
return tuple(x + y for x, y in izip(xs, ys))
甚至更多功能上:
myadd = lambda xs,ys: tuple(x + y for x, y in izip(xs, ys))
然後做
if(b < a) return myadd((1,0),foo(a-b,b))
我會去
>>> map(sum, zip((1, 2), (3, 4)))
[4, 6]
,或者更自然:
>>> numpy.array((1, 2)) + numpy.array((3, 4))
array([4, 6])
工程 - 但不得不導入numpy可能是小編碼矯枉過正。 – jitter 2017-01-23 17:24:18
tuple(map(operator.add, a, b))
相較於通過高帶寬的答案,這種方法要求元組在Python 2.7或更早版本中具有相同的長度,反而會引發TypeError。在Python 3中,map
略有不同,因此結果是一個長度等於a
和b
中較短的和的元組。
如果你想在Python 2截斷行爲,你可以用itertools.imap
替代map
:
tuple(itertools.imap(operator.add, a, b))
做挖掘的風格,但確實需要另一個導入。 – jitter 2017-01-23 17:22:57
如果你想+
自己這樣的行爲,你可以繼承tuple
並覆蓋除:
class mytup(tuple):
def __add__(self, other):
if len(self) != len(other):
return NotImplemented # or raise an error, whatever you prefer
else:
return mytup(x+y for x,y in izip(self,other))
__sub__
,__mul__
,__div__
,__gt__
(elementwise >
)等等。Mor可以找到關於這些特殊操作員的信息,例如here (numeric operations)和here (comparisions)
您仍然可以通過調用原始元組添加來附加元組:tuple.__add__(a,b)
而不是a+b
。或者在新類中定義一個append()
函數來執行此操作。
- 1. 如何使用的元組
- 2. 如何使元組
- 3. 如何反轉使用python的元組列表中的元組?
- 4. 如何使用PyYAML讀取python元組?
- 5. 如何比較使用MySQL的元組?
- 6. 如何使用元組初始化LSTMCell
- 7. 如何使用xml架構組元素
- 8. 如何使用文件構建元組?
- 9. 如何使用元組MVC 5
- 10. 如何使用數組的元素?
- 11. 如何元組
- 12. 如何在數組元組上應用一個動作元組?
- 13. 如何從元組中獲取元組中元素的引用元組?
- 14. 如何在元組中使用'issubset'和多元素(python)
- 15. 如何使用重複元素在多行中組合元素
- 16. 如何使用CHOLMOD將元素添加到三元組矩陣?
- 17. 使用Python元組
- 18. 如何從元組中創建元組?
- 19. 如何在使用RODSPAN分組單元格時使用TBODY?
- 20. 如何使用javascript將svg使用元素插入svg組?
- 21. 如何使用逗號組合數組中的所有元素?
- 22. 如何提取元組數組使用Json4s?
- 23. 如何使用數組#每個元素相乘數組?
- 24. 如何使用主鍵和輔助鍵分組數組元素?
- 25. 如何使用先前生成的元組來生成新的元組
- 26. 如何將元組變爲元組的元組?
- 27. 如何使獨特的元組scala
- 28. 如何使數組元素成爲ArrayList?
- 29. 如何使許多元組變量名
- 30. 如何使Java的元組的列表
'tuple(x + y for x,y in izip(xs,ys))''。 – delnan 2011-04-09 19:40:26
正是我想要做'myadd'這樣的事情是最好的方式嗎? – fpointbin 2011-04-09 19:45:54
是的,而且delnan的評論更精闢。 – highBandWidth 2011-04-09 19:46:51