Как получить первое и последнее значение цикла в Python?

#python #datetime #date-range #timedelta #astropy

Вопрос:

Я хочу только первое и последнее значение, я имею в виду 2021-01-30 15:51:47 -2.0665672163030704 e-06 и 2021-01-30 15:51:51 -1.0708335011265263 e-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 lt; 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  

Комментарии:

1. вместо диапазона(time_diff) вы можете поставить [0, time_diff], и это даст вам первое и последнее значение. Так как диапазон дает вам диапазон от 0 до time_diff.

2. чтобы уточнить, вам нужен вывод только там, где ваше условие истинно ( eph lt; 0 )? Для повторения минут вы можете просто использовать timedelta(minutes=i) в своем коде.

3. да, я хочу выводить только при условии true (eph

4. вместо того, чтобы просто печатать результаты, вы можете добавить их в список, а затем, наконец, выбрать первый и последний элемент этого списка.

5. Спасибо @MrFuppes Я абсолютный новичок и тренируюсь самостоятельно…

Ответ №1:

с помощью комментария выше вы можете указать ключевое слово в timedelta следующим образом:

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