我有一个按嵌套结构排序的代码列表。例如,以下是前20条:
codes
8.
8.5
8.51
8.528.6
8.710
31
31.1
38
38.1
38.2
38.3
41
41.1
41.11
41.12
41.2
41.2141.4
小数点越多,代码越具体。我需要找到一种方法,只列出我用粗体突出显示的最具体的代码。如果将这些数字想象成一棵树,其中每个十进制舍入级别对应于树中的一个节点级别,那么我需要得到所有的叶子
例如,8.51比8.5更具体,8.5比8更具体。8.6也是一个叶,因为它比8更具体,并且没有来自它的子节点
树结构由输入数组codes
完美定义,因为如果数组中存在一个数A.abc
,那么A.ab
、A.a
和A
也必须存在于数组中。数组可以方便地按升序排序
我想要一个算法,找到这些叶子并将它们收集到一个列表/向量中。谢谢
您可以尝试以下方法:
我假设1)数组总是排序的,2)所有使用的舍入都对应于一片叶子,或者可能缺少一些?例如:您是否总是有
8, 8.4, 8.42, 8.423
等,或者您是否可以有8, 8.4, 8.423
(缺少舍入到百分之一)都是肯定的这些已经被OP证实是正确的
编辑:将
float
整数正确转换为ints
您可以通过计算小数的数量并添加小数大于2的值来使用列表理解。试试这个:
str(i)[::-1].find('.')
只获取点后的小数位数。然后,如果十进制数>=2
,或者您喜欢的任何数字,您可以将值附加到列表中相关问题 更多 >
编程相关推荐