我有一个嵌套的数字列表。就像这个:
[[1,2,3],[3,2,1],[3,1,2],[2,3,1]]
现在,我要计算大于它的前一个元素和前一个元素的数,它的两边必须有一个元素。输出应该是这样的(在列表中):
[0,0,0,1]
输出列表的第一个元素是零,因为在第一个嵌套列表中,它的第一个元素没有其他前一个元素,只有2个在它的前面。对于第二个元素(仍然在第一个嵌套列表中),它有1作为前一个元素,3作为前一个元素,但是输出为零,因为它需要大于前一个元素和前一个元素。第三个元素也是无效的,因为它没有前一个元素,只有前一个元素。除最后一个嵌套列表外,其他嵌套列表也是如此。在上一个嵌套列表中,2和1已经无效,但是3是,所以现在我们需要检查它是否高于它的两个元素。因为3更高,所以最后一个嵌套列表的值是+1。你知道吗
另一个例子:
[[1,2,1,3,1],[2,2,2],[2,3,4,3,4,2,3,1]]
输出应为:
[2,0,3]
输出列表的第一个元素是2,因为在第一个嵌套列表(第一个和最后一个元素已经无效)中,2同时包含这两个元素,并且它也高于这两个元素。然后,我们移到1,它也有两个元素,但它小于这两个元素,所以它是无效的。3是有效的,因为它有两个元素,而且它也更高。所以我们计算+2,因为有2个数字是有效的。第二个嵌套列表无效,因为包含这两个元素的数字不能等于其中任何一个,它需要更高,并且第一个和最后一个元素已经存在无效的.In最后一个嵌套列表,它的第一个和最后一个元素已经无效了,所以我们从它的第二个开始,3,3有两个元素,但它只比前一个元素高,但比前一个元素小。接下来,4有两个元素,它也更高,所以它被计数。下一步,3有两个元素,但它比它们都小,所以不计算。接下来,4同时包含了这两个元素,并且它也高于它的元素。接下来,2有两个元素,但它比它的元素小,所以不计算。接下来,3同时包含这两个元素,并且它也高于这两个元素,所以它也是count。这使得输出列表中的最后一个元素计数为+3。你知道吗
如果解释太长/太长,我很抱歉,但是在python3中有什么方法可以做到这一点吗?你知道吗
编辑:
到目前为止,我已经试过了:
listy = [[1,2,3],[3,2,1],[3,1,2],[2,3,1]]
list_hold = []
for x in listy:
for y in x:
if y>y+1 and y>y-1:
list_hold.append(x)
print(list_hold)
但它只返回一个空列表。你知道吗
您需要一个滑动窗口迭代器;从一个输入序列中产生一行3个元素;然后您所要做的就是计算中间元素大于其他两个元素的窗口的数量。你知道吗
滑动窗口问题已经解决了:Rolling or sliding window iterator?,使用^{} function from the top answer there 可以得到:
演示:
我的第一个想法是np.差异。如果有给定的值列表VAL,则可以使用np.差异(VAL)获取一个数组,如果下一个数较小,则该数组为负;如果下一个数较大,则该数组为正
相关问题 更多 >
编程相关推荐