Python中如何处理这样的数据

有这样一个列表:list = [9,4,5,6,5,4,7,7,6]
因为 9,4 是下降的,所以处理成 ret1 = [9,4]
4,5,6 是上升的,所以处理为 ret2 = [4,6]
6,5,4 是下降的,所以处理为 ret3 = [6,4]
应该怎样处理,才能成为这样的呢?
Python中如何处理这样的数据

18 回复

处理很容易,但是楼主的需求逻辑表述不清楚。


我无法理解你的问题。

不好意思,我再描述一下.
像上述列表, 9,4 是属于下降趋势,所以把它存为[9,4],就是只存下降的起,始
4,5,6 这一段属于上升趋势,存这段的起,始,就是存为[4,6] …
不知道这样表达是否可以

遍历一遍不就好了

拐点的特征很明显啊
凸拐点: a[i - 1] < a[i] and a[i] > a[i + 1]
凹拐点: a[i - 1] > a[i] and a[i] < a[i + 1]
通过拐点特征, 配合边界值处理, 再用一个临时变量存上一个拐点, 就能整理出你想要的格式了.

那个 4 被前面 9 4 给消耗掉么? 7 7 怎么处理?

不消耗,7 7 按照下降处理

谢谢,我试试

遍历过程中不会处理…

怎么感觉是特别基础的算法题。。。找拐点的问题。。。。
下次面试可以试试这题。

大佬,我是新手上路,帮帮忙…

一个循环判断 n 与 n+1 的大小保留为标识符

谢谢大佬指点~

def check_sort(arg_list: list):
□□□□if arg_list[-2] == arg_list[-1]:
□□□□□□□□arg_list[-2] += 0.1
□□□□if arg_list == sorted(arg_list, reverse=True):
□□□□□□□□return 'DESC’
□□□□if arg_list == sorted(arg_list):
□□□□□□□□return 'ASC’
□□□□else:
□□□□□□□□return 'None’

source_list = [9,4,5,6,5,4,7,7,6]

result = {‘ASC’: [], ‘DESC’: []}

length = len(source_list)
temp_list = source_list[:2]

i = 2
while True:

□□□□sort_status = check_sort( temp_list + [source_list[i]])

□□□□if sort_status == ‘None’:
□□□□□□□□result[check_sort(temp_list)].append([temp_list[0], temp_list[-1]])
□□□□□□□□temp_list = [temp_list[-1], source_list[i]]
□□□□else:
□□□□□□□□temp_list.append(source_list[i])

□□□□i += 1
□□□□if length == i:
□□□□□□□□result[check_sort(temp_list)].append([temp_list[0], temp_list[-1]])
□□□□□□□□break

print(result)

{‘ASC’: [[4, 6], [4, 7]], ‘DESC’: [[9, 4], [6, 4], [7, 6]]}

python<br>def sort(x):<br> temp_high = 0<br> temp_low = 0<br> result = []<br> for i in range(len(x)):<br> if i == 0:<br> continue<br> if i == len(x) - 1:<br> if x[i] &lt;= x[i-1]:<br> result.append((x[temp_high], x[i]))<br> else:<br> result.append((x[temp_low], x[i]))<br> continue<br> if x[i]&gt;=x[i+1] and x[i]&gt;x[i-1]:<br> temp_high = i<br> result.append((x[temp_low], x[i]))<br> elif x[i]&lt;=x[i-1] and x[i]&lt;x[i+1]:<br> temp_low = i<br> result.append((x[temp_high], x[i]))<br> else:<br> continue<br> return result<br>a = [9,4,5,6,5,4,7,7,6]<br>print(sort(a))<br><br>
<br>[(9, 4), (4, 6), (6, 4), (4, 7), (7, 6)]<br>


手机上的飘号好像有点问题

谢谢!

回到顶部