Python 将列表中的数字舍入为2sf

Python 将列表中的数字舍入为2sf,python,Python,我对python非常陌生,我的列表中有一组数据,将输出以下内容: [(['S1'], 123.6, 4, -3.09710082168993), (['S2'], 189.6, 4, -3.09710082168993)] [(['S1'], 123.6, 4, -1974.1075190129), (['S2'], 189.6, 4, -1974.1075190129)] 我通过以下代码获得此输出: plateX = g_o.getresults(phase, g_o.ResultTypes

我对python非常陌生,我的列表中有一组数据,将输出以下内容:

[(['S1'], 123.6, 4, -3.09710082168993), (['S2'], 189.6, 4, -3.09710082168993)]
[(['S1'], 123.6, 4, -1974.1075190129), (['S2'], 189.6, 4, -1974.1075190129)]
我通过以下代码获得此输出:

plateX = g_o.getresults(phase, g_o.ResultTypes.NodeToNodeAnchor.X, 'node') 
plateY = g_o.getresults(phase, g_o.ResultTypes.NodeToNodeAnchor.Y, 'node') 
plateM = g_o.getresults(phase, g_o.ResultTypes.NodeToNodeAnchor.AnchorForce2D, 'node')
layer = (
['S1'],
['S2'],    
['S3'],
['S4'],
['S5'],
['S6'],)

result = zip(layer, plateX, plateY, plateM)
test1 = list(result)
print(test1)
我应该如何舍入结果,但保留“S1”、“S2”作为结果的指标?
谢谢你的帮助

E.g.
[(['S1'], 123.6, 4, -3.09710082168993), (['S2'], 189.6, 4, -3.09710082168993)]
to
[(['S1'], 123.6, 4, -3.1), (['S2'], 189.6, 4, -3.1)]
这就是我想要实现的目标。

编辑这一行:

result = zip(layer, plateX, plateY, round(plateM, 2))

您可以使用round函数,该函数的第一个参数是数字,第二个参数是精度。

将元组转换为列表,然后对元素进行舍入

d = [(['S1'], 123.6, 4, -3.09710082168993), (['S2'], 189.6, 4, -3.09710082168993)]
d = list(map(list, d))              #Convert to list.
for i in d:
    i[-1] = round(i[-1], 2)      #round value.
d = list(map(tuple, d))             #Convert to tuple.
print(d)
输出:

[(['S1'], 123.6, 4, -3.1), (['S2'], 189.6, 4, -3.1)]

您可以使用generator在适当的位置将其环绕

result = zip(layer, plateX, plateY, (round(x, 2) for x in plateM))

为解释器节省内存和工作量

您是否尝试过圆滑(数字、精度)或
ceil()
?此外,您是否浏览过词典?这些数据看起来像是要放在字典里。谢谢你的回复,但是我应该如何将“round(number,precision)”命令添加到列表中,因为列表与“text,value,value”组合在一起,很抱歉,我对python代码非常新,而且完全愚蠢@Vj@RamkishoreM,你这是什么意思…?@KLo,dictionary是Python中的另一种数据结构。谢谢你的回复,我试过了,我得到的错误是:result=zip(layer,plateX,plateY,round(plateM,2))TypeError:type PlxProxyObjectValues不定义round方法你不能对整组值进行舍入together@KLo这可能会起作用。请将plateM转换为float,而不是尝试float(plateM)。谢谢您的回复!,但是,在映射列表后,它会打印“”的结果,而不是正确的值,我应该怎么做@RakeshUpdated snippet for Python3感谢您的回复,如果我想将plateX、plateY和plateM全部围成2sf,有没有更干净的方法。。?再次感谢@Ramkishore Mdo为plateX和plateY提供相同的发电机