![](/img/trans.png)
[英]Find minimum of absolute of second value in a subset of tuples in a list of tuples (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.