【发布时间】:2013-04-28 17:12:56
【问题描述】:
我有 2 个列表:
first_lst = [('-2.50', 0.49, 0.52), ('-2.00', 0.52, 0.50)]
second_lst = [('-2.50', '1.91', '2.03'), ('-2.00', '1.83', '2.08')]
我想对它做以下数学运算:
将0.49 乘以1.91(来自first_lst 和second_lst 的对应值),并将0.52 乘以2.03(还有对应的值)。我想在每个相应元组中0 位置的值相同的条件下执行此操作,因此-2.50 == -2.50 等。显然,我们也对重新分配元组进行相同的数学运算。
我的代码:
[((fir[0], float(fir[1])*float(sec[1]), float(fir[2])*float(sec[2])) for fir in first_lst) for sec in second_lst if fir[0] == sec[0]]
生成一些对象:
[<generator object <genexpr> at 0x0223E2B0>]
你能帮我修复代码吗?
【问题讨论】:
-
您的元组的
string和float类型不匹配。这是故意的还是只是一个错误?如果您将这些作为元组,您的 LC 将失败。因为float不能乘以string。请参阅我的答案以修复该错误。 -
在意识到需要将所有内容转换为浮点数之前,我已经编写了这段代码。现在将对其进行编辑,以免混淆任何人。感谢您指出。
-
好吧,Ashwini 的回答解决了这个问题。通常,当您使用列表推导式时,您必须将最终结果类型转换/存储到列表或元组中。
标签: python python-2.7 list-comprehension