亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 python 中打印 For 循環輸出的 “nth” 值

如何在 python 中打印 For 循環輸出的 “nth” 值

肥皂起泡泡 2022-08-25 14:54:16
所以我想知道是否有辦法從For Loop輸出中打印第n個值(不是最后一個值)。例如:假設我只想打印 For Loop 輸出中的“倒數第五”值或“倒數第三”值。任何想法我怎么能這樣做?我是編碼/python的新手,在進行大量研究和學習之后,我正在構建此代碼。所以任何幫助贊賞。目前,下面的代碼給了我最后一個值。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 daterange(start_date, end_date):    x = single_date.strftime("%Y-%m-%d")print(x)
查看完整描述

3 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

該技術是將結果累積到容器中,然后將第 n 個元素打印回來。


一種可能性是使用 maxlen 值設置為 n 的 collections.deque()。


from datetime import timedelta, date

from collections import deque


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)


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 的任何值。


希望這有幫助:-)


查看完整回答
反對 回復 2022-08-25
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

可以在循環時使用枚舉,從而提供迭代計數。您可以根據需要打印的值在內部提供條件,如下所示:


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()

n=5

length =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)


查看完整回答
反對 回復 2022-08-25
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

可以使用切片僅按索引獲取某些元素。但是,切片不適用于生成器,因此您需要將其轉換為列表。


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 list(daterange(start_date, end_date))[4:]:

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

    print(x)

這將打印第 5 個(索引:4)到最后一個元素。


查看完整回答
反對 回復 2022-08-25
  • 3 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號