我需要在元组中乘以2个数字

时间:2014-04-11 18:12:39

标签: python python-3.x

我需要编写一个程序,将数据作为两元素元组的元组,例如:

((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)

谢谢大家的帮助。

4 个答案:

答案 0 :(得分: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 :(得分:1)

最好通过列表理解来实现:

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

您可以向后阅读此内容以确定其工作原理。理解“[...]”遍历seq,将每个元组解包为变量ab,并将它们相乘,生成包含产品的新列表。

答案 2 :(得分:0)

这是最简单的方法 - 你可以解压缩列表中的每个tuple,然后在列表理解中将它们相乘:

>>> ((1, 1), (2, 2), (12, 13), (4, 4), (99, 98))
>>> [n*m for n, m in start]
[1, 4, 156, 16, 9702]

答案 3 :(得分: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