Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使列表中的元素至少保持一定的距离-在循环Python时更改迭代器_Python_Iterator - Fatal编程技术网

使列表中的元素至少保持一定的距离-在循环Python时更改迭代器

使列表中的元素至少保持一定的距离-在循环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

正如标题所示,我开发了一个函数,在给定一个有序升序列表的情况下,只保留距离至少为k个句点的元素,但在循环时动态更改迭代器时,它会这样做。我被告知要像瘟疫一样避免这种做法,尽管我不完全相信为什么这是一个如此糟糕的主意,但我信任那些我一直依赖于训练的人,并因此寻求如何避免这种做法的建议。代码如下:

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

我向你的回答鞠躬。如此简单和优雅。多谢各位!