使用python编程处理大量数据,效率太慢怎么解决
我的程序是这样的whilei<10000000ifa[i]==a[i+1]:dela[i+1]ifa[i]<a[i+1]:ifa[i+1]<=a[i+2]:dela[i+...
我的程序是这样的
while i<10000000
if a[i]==a[i+1]:
del a[i+1]
if a[i]<a[i+1]:
if a[i+1]<=a[i+2]:
del a[i+1]
l=l-1
else : i=i+1
if a[i]>a[i+1]:
if a[i+1]>=a[i+2]:
del a[i+1]
l=l-1
else : i=i+1
a是一个一维数组,已经存有上千万个数据。
运行的时候速度很慢,怎么解决这个问题~ 展开
while i<10000000
if a[i]==a[i+1]:
del a[i+1]
if a[i]<a[i+1]:
if a[i+1]<=a[i+2]:
del a[i+1]
l=l-1
else : i=i+1
if a[i]>a[i+1]:
if a[i+1]>=a[i+2]:
del a[i+1]
l=l-1
else : i=i+1
a是一个一维数组,已经存有上千万个数据。
运行的时候速度很慢,怎么解决这个问题~ 展开
4个回答
展开全部
循环本身是没有什么耗时的;恐怕资源消耗于数字a的反复调整变化上;
如果内存资源充裕的话建议不对数组a进行del操作,而是顺序地将满足条件的数据添加到新数组中。
如果内存资源充裕的话建议不对数组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)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用cython加速可能会好点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将数据分片处理是不是好些。
追问
这个方法可行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询