gpt4 book ai didi

python - 列表列表的压缩列表丢失小数点

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:44 24 4
gpt4 key购买 nike

我有一个list of lists of lists:

[ [['1', '3.61912', '3.25558', '3.98787'], ['2', '5.35465', '4.98407', '5.82305'], ['3', '14.8184', '13.8878', '15.7686'], ['4', '0.278589', '0.25531', '0.302837'], ['5', '6.65982', '6.5638', '6.75855'], ['6', '0.05', '0', '0'], ['7', '0.00747086', '0.00620575', '0.00873102'], ['999', '0.', '0.', '0.'], ['998', '0.897487603306', '0.897487603306', '0.897487603306']], 
[['1', '6.14332', '5.24188', '7.06803'], ['2', '5.73822', '5.31854', '6.27864'], ['3', '19.1023', '17.4778', '20.901'], ['4', '0.113164', '0.0963808', '0.13141'], ['5', '6.56417', '6.49081', '6.63889'], ['6', '0.05', '0', '0'], ['7', '0.00959252', '0.00842128', '0.0107523'], ['999', '0.', '0.', '0.'], ['998', '1.06972222222', '1.06972222222', '1.06972222222']],
[['1', '14.3005', '12.9284', '15.7195'], ['2', '5.25181', '4.8594', '5.77533'], ['3', '16.0296', '14.4662', '17.7269'], ['4', '0.263088', '0.216536', '0.316766'], ['5', '6.55534', '6.40134', '6.73512'], ['6', '0.05', '0', '0'], ['7', '0.00660481', '0.00493246', '0.00825176'], ['999', '0.', '0.', '0.'], ['998', '1.01537254902', '1.01537254902', '1.01537254902']] ]

zip,为了理解它是如何工作的,我打印了:

print zip(*list[0]) --> [('1', '2', '3', '4', '5', '6', '7', '999', '998'), ('3.61912', '5.35465', '14.8184', '0.278589', '6.65982', '0.05', '0.00747086', '0.', '0.897487603306'), ('3.25558', '4.98407', '13.8878', '0.25531', '6.5638', '0', '0.00620575', '0.', '0.897487603306'), ('3.98787', '5.82305', '15.7686', '0.302837', '6.75855', '0', '0.00873102', '0.', '0.897487603306')]

如果我再次压缩,我会丢失小数:

print zip(*values[0][3]) --> [('4', '0', '0', '0')]

此外,最后一次压缩会导致最奇怪的结果:

print zip(*values[0][3][2]) --> [('0', '.', '2', '5', '5', '3', '1')]

为什么会丢失小数点?为什么它们在最终 zip 中作为单个元素返回?最后:乍一看,这是获取列表和元素的最佳方式吗?

最佳答案

您需要了解您在此处压缩的内容。 values[0][3] 是一个单个列表,其中包含字符串:

>>> values[0][3]
['4', '0.278589', '0.25531', '0.302837']

这些字符串中的每一个都是序列,但是 zip() 只能为列表中的最短 序列生成配对。这是第一个字符串,它只包含一个 字符。

因此,您将 '4' 与其他 3 个字符串中的每个 '0' 字符配对。

接下来,当您仅向 zip() 提供一个序列参数时,您将获得各个元素。您在第 3 个 zip() 调用中做到了这一点:

>>> values[0][3][2]
'0.25531'
>>> list(values[0][3][2])
['0', '.', '2', '5', '5', '3', '1']

这只是一个序列,它被拆分成单独的字符。

关于python - 列表列表的压缩列表丢失小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25399687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com