我需要编写一个程序,将数据作为两元素元组的元组,例如:
((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 :(得分: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
>>>
上的文档
答案 1 :(得分:1)
最好通过列表理解来实现:
seq = ((1,1), (2,2), ...)
prod = [a * b for a,b in seq]
您可以向后阅读此内容以确定其工作原理。理解“[...]”遍历seq
,将每个元组解包为变量a
和b
,并将它们相乘,生成包含产品的新列表。
答案 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