-1
我有一些数据是这样的:集团数在该范围的数字的总和等于1
[3, 3, 2, None, None, None, None, None, None, 1, None, 1, None]
如果我分配1 - x
到列表中的每个非无值,或1
每个没有价值,我得到这些数字:
[-2, -2, -1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1]
我给你从指数i
数字来j
一组,如果在该范围的数字的总和等于1,在这种情况下,这是分组名单看起来像:
[<-2, <-2, <-1, 1, 1>, 1, 1>, 1, 1>, <0, 1>, <0, 1>]
或者,如果原来的数字被放在:
[<3, <3, <2, None, None>, None, None>, None, None>, <1, None>, <1, None>]
每个非无值给予评分基于它是如何深嵌套,从0开始。例如,在2
<2, None, None>
组的分数为2.我想做一个函数来计算每个数字的分数,返回一个数字列表,其中每个数字对应于原始列表中的下一个非无值。在上面的例子,那结果将是:
[0, 1, 2, 0, 0]
两个解决方案,我能想到的:
创建各组的开始和结束的索引列表,并且为每一个,看看有多少其他它落在里面。
创建一个递归函数,在遇到非-non值时调用它自己。
其中任何一个的实现将是非常有用的,否则我可以使用一些技巧来创建另一个解决方案。