循环本身是没有什么耗时的;恐怕资源消耗于数字a的反复调整变化上;
如果内存资源充裕的话建议不对数组a进行del操作,而是顺序地将满足条件的数据添加到新数组中。
追问不知道怎么编
追答给你一段伪代码参考一下:
a, cpy, skips = range(10000000), [], 0
L = len(a)
for i, element in enumerate(a):
if skips:
# 跳过若干已经判断要跳过的元素
skips -= 1
continue
# 用你的业务逻辑判断后续跳过几个元素
j = i+1
while j < L:
if yourbusinesslogic(i, j):
skips += 1
else:
break
j += 1
# 添加当前元素到副本列表
cpy.append(element)
追问我试了
原来比如a=[1,2,3,4,5,6,8,5,4,3,9,8,1]
运算后
cpy=[1,3,5,8,4,3,9,8,1]
结果还是不符合
追答#!/usr/bin/python
# encoding: utf-8
a=[1,2,3,4,5,5,5,6,8,8,5,4,4,3,9,8,1]
L = len(a)
def businesslogic(i, j):
if j >= L-1:
return False
if a[i] == a[j]:
return True
if a[i] < a[j] <= a[j+1]:
return True
if a[i]>a[j]>=a[j+1]:
return True
print a
cpy, skips = [], 0
for i, element in enumerate(a):
if skips:
# 跳过若干已经判断要跳过的元素
skips -= 1
continue
# 用你的业务逻辑判断后续跳过几个元素
j = i+1
while j < L:
if businesslogic(i, j):
skips += 1
else:
break
j += 1
# 添加当前元素到副本列表
cpy.append(element)
print cpy
>python "baidu.py"
[1, 2, 3, 4, 5, 5, 5, 6, 8, 8, 5, 4, 4, 3, 9, 8, 1]
[1, 8, 3, 9, 1]
>
is it?
本回答被提问者采纳