【问题标题】:How to get loop first and last value in Python?如何在 Python 中获取循环的第一个和最后一个值?
【发布时间】:2022-01-03 21:53:38
【问题描述】:

我只想要第一个和最后一个值,我的意思是 2021-01-30 15:51:47 -2.0665672163030704e-06 和 2021-01-30 15:51:51 -1.0708335011265263e-05 这个代码还提供每个秒,但我希望每分钟都有结果。

from datetime import datetime, timedelta
from astropy.time import Time

start_date_time = datetime(2021, 1, 30, 15, 00, 00)
end_date_time = datetime(2021,1, 30,16,00,00)
time_diff = int((end_date_time - 
start_date_time).total_seconds())

for i in range(time_diff):
    day = (start_date_time + timedelta(0, i))
    dt = Time(day)
    jd =dt.jd
    # print(day,jd)
    eph = swe.calc_ut(jd,2)[0][3]
    if eph < 0:
        print(dt,eph)

Output - 
2021-01-30 15:51:47 -2.0665672163030704e-06
2021-01-30 15:51:48 -4.222647236587894e-06
2021-01-30 15:51:49 -6.384221081802716e-06
2021-01-30 15:51:50 -8.565878651309763e-06
2021-01-30 15:51:51 -1.0708335011265263e-05

【问题讨论】:

  • 你可以放 [0, time_diff] 而不是 range(time_diff) 它会给你第一个和最后一个值。由于 range 为您提供从 0 到 time_diff 的范围。
  • 澄清一下,您只想要条件为真的输出 (eph &lt; 0)?要迭代分钟,您只需在代码中使用 timedelta(minutes=i)
  • 是的,我只想在条件为真(eph
  • 您可以将它们附加到一个列表中,而不是只打印结果,然后最后获取该列表的第一个和最后一个元素。
  • 谢谢@MrFuppes 我是绝对的初学者,我正在练习自己......

标签: python datetime date-range timedelta astropy


【解决方案1】:

使用上面的注释,您可以像这样在 timedelta 中指定关键字:

for i in [0, time_diff]:
    day = (start_date_time + timedelta(minutes=i))

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 1970-01-01
    • 2010-11-02
    • 2016-12-12
    • 1970-01-01
    • 2019-03-02
    • 2019-03-09
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多