如何将数字乘以元组列表中的第二个值(python)?

时间:2015-11-02 20:32:31

标签: python tuples

我有一个元组列表,我的程序从一个文档中读取,如下所示:

(1914, 1.0)
(1915, 1.0)
(1916, 7.9)
(1917, 17.4)
(1918, 18.0)

我要做的是取第二个数字(浮点数)并将其乘以用户确定的另一个数字。例如,如果用户选择14.4,程序将乘以14.4 * 1.0,14.4 * 1.0,14.4 * 7.9,14.4 * 17.4,14.4 * 18.0等等,并将其附加到列表中。我试过了

[x*14.4 for x in t2[1]]

其中t2是元组,但显然这不起作用并且使TypeError“'float'对象不可迭代。”我对python很新,我不完全确定要做什么。

4 个答案:

答案 0 :(得分:1)

假设:

LoT=[(1914, 1.0),
(1915, 1.0),
(1916, 7.9),
(1917, 17.4),
(1918, 18.0)]

由于元组是不可变的,你需要创建一个新的元组(如果你想要一个新的元组列表)。

>>> x=14.4
>>> [(t[0], t[1]*x) for t in LoT]
[(1914, 14.4), (1915, 14.4), (1916, 113.76), (1917, 250.55999999999997), (1918, 259.2)]

如果你只想要一个元组的第二个元素的列表相乘,你可以这样做:

>>> [t[1]*x for t in LoT]
[14.4, 14.4, 113.76, 250.55999999999997, 259.2]

你发布状态:

  

我要做的是取第二个数字(浮点数)和   将其乘以用户确定的另一个数字。

这就是我使用[t[1]*x for t in LoT]的原因,因为t[1]是具有至少2个元素的任何元组的第二个元素。

如果每个元组保证长度为两个元素,您也可以对同一个列表执行[y*x for _, y in LoT]

答案 1 :(得分:1)

怎么样:

[y * 14.4 for x, y in tuples]

答案 2 :(得分:0)

试试这个:

[x[1]*14.4 for x in t2]

答案 3 :(得分:0)

#!/usr/bin/env python3
import sys
mytup = (
    (1914, 1.0),
    (1915, 1.0),
    (1916, 7.9),
    (1917, 17.4),
    (1918, 18.0)
)
x = int(sys.argv[1])
print(['%0.2f' % (b*x) for a, b in mytup])

结果:

['3.00', '3.00', '23.70', '52.20', '54.00']

基本上这只是一个关闭/ anon函数来使用默认的生成器+迭代器,我在阅读你的问题后就是你想要的。