2015-11-02 41 views
0

我有一个元组列表,我的节目从开始像这样的文档阅读:如何将数字乘以元组列表中的第二个值(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]] 

,其中T 2元组,但显然,这并不工作,并给出了类型错误“‘浮动’对象不是可迭代。”我对Python非常陌生,我不完全确定要做什么。

+0

请提供给定输入的预期输出 – pkacprzak

+0

您需要一种遍历元组的方法,而不仅仅是一个元组。尝试一下wvdz的答案,其中t2是元组列表。 –

回答

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]

0

试试这个:

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

OP表示't2'是'tuple',而不是文件迭代器或'list'。 – TigerhawkT3

+0

@ TigerhawkT3我认为他的意思是'元组列表' – wvdz

+0

根据错误信息,不,我认为't2'是一个单独的'元组',在这种情况下这也不起作用。 – TigerhawkT3

1

什么:

[y * 14.4 for x, y in tuples] 
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'] 

基本上这只是一个闭合/匿名FUNC消耗默认发电机+这我假设迭代器就是你想在阅读你的问题后。

相关问题