繁体   English   中英

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

[英]How to multiply a number by the second value in a list of tuples (python)?

我有一个元组列表,程序从这样的文档中读取:

(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的新手,我不确定要怎么做。

鉴于:

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] [t[1]*x for t in LoT]因为t[1]是具有至少2个元素的任何元组的第二个元素。

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

关于什么:

[y * 14.4 for x, y in tuples]

尝试这个:

[x[1]*14.4 for x in t2]
#!/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']

基本上,这只是一个使用默认的generator + iterator的闭包/匿名函数,我假设这是阅读问题后想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM