2014-04-11 19 views
-2

我需要編寫一個程序,它作爲數據兩個元素的元組,例如元組乘以2號:我需要在元組

((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 

這個和/或類似的數據應當被硬編碼(不需要用戶輸入)。然後,遍歷該元組並打印出將這兩個數字相乘的結果,並使用字符串格式很好地顯示。

如果您向我詳細解釋如何操作和如何解決,我將非常感激。

更新:

我做

multuple = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 

for a, b in multuple: 
    print("{} = {} x {}".format(a*b,a,b) 

感謝大家的幫助。

+0

你吃過一口吧?如果你想展示你的嘗試,那將會更容易。 – femtoRgon

+0

你可以從'map(lambda t:t [0] * t [1],ts)'開始,其中'ts'是你元組的元組 –

+0

這裏有一些鏈接:[Python Tutorial](https:// docs。 python.org/3/tutorial/),[用Python學習困難的方式](http://learnpythonthehardway.org/book/) – MattDMo

回答

1

最簡單的方式做到這一點:

>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 
>>> result = (a[0] * a[1] for a in data) 
>>> list(result) 
[1, 4, 156, 16, 9702] 
>>> 

計算result像上面的一行是一樣的做:

result = [] 
for item in data: 
    result.append(item[0] * item[1]) 

一條線計算提及最多的答案被稱爲list comprehension。由於我將a[0] * a[1] for a in data包裝在圓括號中而不是方括號,因此它會指示口譯員返回generator而不是列表。這就是爲什麼我必須使用list(result)作爲列表打印它。對於像上面那樣的較小輸入數組長度來說,這可能是一種矯枉過正,但在處理較大的列表時,返回生成器是一種很好的做法

不知道你的字符串格式化打印很好的結果意味着什麼,但是這是一個辦法:

>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 
>>> result = (a[0] * a[1] for a in data) 
>>> for item in zip(data, list(result)): 
     print 'Product of {} and {} is {}'.format(item[0][0], item[0][3], item[1]) 


Product of 1 and 1 is 1 
Product of 2 and 2 is 4 
Product of 12 and 13 is 156 
Product of 4 and 4 is 16 
Product of 99 and 98 is 9702 
>>> 

format()

1

這最好用一個列表理解來完成文檔:

seq = ((1,1), (2,2), ...) 
prod = [a * b for a,b in seq] 

您可以反向閱讀以確定其工作原理。理解「[...]」遍歷seq,將每個元組解包爲變量ab,並將它們相乘,生成包含產品的新列表。

0

這是way-你可以解開列表中的每個tuple,然後在列表解析中一起乘他們最簡單的:

>>> ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 
>>> [n*m for n, m in start] 
[1, 4, 156, 16, 9702] 
0
>>> data = ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98)) 
>>> for x, y in data: 
>>> print("{} * {} = {}".format(x, y, x*y)) 

1 * 1 = 1 
2 * 2 = 4 
12 * 13 = 156 
4 * 4 = 16 
99 * 98 = 9702 
+0

這正是我所做的。謝謝。 – suyesh

+0

我很樂意提供幫助。如果你能夠幫助你的話,那麼它會很好。 ;) –

+0

我投了票,但它說我需要至少有15聲望。 – suyesh