使列表中的元素至少保持一定的距离-在循环Python时更改迭代器
正如标题所示,我开发了一个函数,在给定一个有序升序列表的情况下,只保留距离至少为k个句点的元素,但在循环时动态更改迭代器时,它会这样做。我被告知要像瘟疫一样避免这种做法,尽管我不完全相信为什么这是一个如此糟糕的主意,但我信任那些我一直依赖于训练的人,并因此寻求如何避免这种做法的建议。代码如下:使列表中的元素至少保持一定的距离-在循环Python时更改迭代器,python,iterator,Python,Iterator,正如标题所示,我开发了一个函数,在给定一个有序升序列表的情况下,只保留距离至少为k个句点的元素,但在循环时动态更改迭代器时,它会这样做。我被告知要像瘟疫一样避免这种做法,尽管我不完全相信为什么这是一个如此糟糕的主意,但我信任那些我一直依赖于训练的人,并因此寻求如何避免这种做法的建议。代码如下: import pandas as pd from datetime import days a = pd.Series(range(0,25,1), index=pd.date_range('2011-1
import pandas as pd
from datetime import days
a = pd.Series(range(0,25,1), index=pd.date_range('2011-1-1',periods=25))
store_before_cleanse = a.index
def funz(x,k):
i = 0
while i < len(x)-1:
if (x[i+1]-x[i]).days < k:
x = x[:i+1] + x[i+2:]
i = i-1
i = i + 1
return x
print(funz(store_before_cleanse,10))
将熊猫作为pd导入
从日期时间导入天数
a=pd.系列(范围(0,25,1),指数=pd.日期\范围('2011-1-1',期间=25))
在清除之前存储=a.index
def funz(x,k):
i=0
而i
你认为可以做些什么来避免它?
p、 美国:不要担心列表没有排序的解决方案。将要给出的列表总是以升序的方式排列。您函数的最大默认值是his具有二次复杂性,因为
x=x[:i+1]+x[i+2::
每次复制整个x
最简单、更有效的方法是
a.resample('10D').first().index
如果您喜欢循环,可以执行以下操作:
def funz1(dates,k):
result=[dates[0]]
for date in dates:
if (date-result[-1]).days >= k:
result.append(date)
return result
我向你的回答鞠躬。如此简单和优雅。多谢各位!