我有一个元组列表,我的程序从一个文档中读取,如下所示:
(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很新,我不完全确定要做什么。
答案 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函数来使用默认的生成器+迭代器,我在阅读你的问题后就是你想要的。