猿问

如何在 python 中打印 For 循环输出的 “nth” 值

所以我想知道是否有办法从For Loop输出中打印第n个值(不是最后一个值)。例如:假设我只想打印 For Loop 输出中的“倒数第五”值或“倒数第三”值。任何想法我怎么能这样做?我是编码/python的新手,在进行大量研究和学习之后,我正在构建此代码。所以任何帮助赞赏。


目前,下面的代码给了我最后一个值。


from datetime import timedelta, date


def daterange(start_date, end_date):

    for n in range(int(start_date.day), int((end_date - start_date).days), 90):

        yield start_date + timedelta(n)


start_date = date(2016, 1, 1)

end_date = date.today()

for single_date in daterange(start_date, end_date):

    x = single_date.strftime("%Y-%m-%d")


print(x)


肥皂起泡泡
浏览 134回答 3
3回答

元芳怎么了

该技术是将结果累积到容器中,然后将第 n 个元素打印回来。一种可能性是使用 maxlen 值设置为 n 的 collections.deque()。from datetime import timedelta, datefrom collections import dequedef daterange(start_date, end_date):    for n in range(int(start_date.day), int((end_date - start_date).days), 90):        yield start_date + timedelta(n)window = deque([], maxlen=5)start_date = date(2016, 1, 1)end_date = date.today()for single_date in daterange(start_date, end_date):    x = single_date.strftime("%Y-%m-%d")    window.append(x)print(window[0])上面的代码输出第五个最旧的条目。2018-12-17上面的代码在宽度为 5 的滑动窗口中累积最新的值。位置 0 处的最早值和位置 -1 处的最新值。您可以将 5 更改为所需的 n 的任何值。希望这有帮助:-)

尚方宝剑之说

可以在循环时使用枚举,从而提供迭代计数。您可以根据需要打印的值在内部提供条件,如下所示:from datetime import timedelta, datedef daterange(start_date, end_date):    for n in range(int(start_date.day), int((end_date - start_date).days), 90):        yield start_date + timedelta(n)start_date = date(2016, 1, 1)end_date = date.today()n=5length =len(list(daterange(start_date, end_date)))for i,single_date in enumerate(daterange(start_date, end_date)):    x = single_date.strftime("%Y-%m-%d")    if i == length-n:        print(x)

婷婷同学_

可以使用切片仅按索引获取某些元素。但是,切片不适用于生成器,因此您需要将其转换为列表。from datetime import timedelta, datedef daterange(start_date, end_date):    for n in range(int(start_date.day), int((end_date - start_date).days), 90):       yield start_date + timedelta(n)start_date = date(2016, 1, 1)end_date = date.today()for single_date in list(daterange(start_date, end_date))[4:]:    x = single_date.strftime("%Y-%m-%d")    print(x)这将打印第 5 个(索引:4)到最后一个元素。
随时随地看视频慕课网APP

相关分类

Python
我要回答