Получение первого и последнего объекта в Python для цикла

В зависимости от того, что именно вы ищете:

  • Float и Double - в значительной степени то, что вы знаете и «любите» из Float и Doubles на всех других языках.
  • Rational , который является Ratio из Integer с
  • FixedPoint - Этот пакет предоставляет значения фиксированной точки произвольного размера. Например, если вам нужно число, представленное 64 целыми битами и 64 дробными битами, вы можете использовать FixedPoint6464. Если вы хотите, чтобы число составляло 1024 целых и 8 дробных битов, используйте $(mkFixedPoint 1024 8) для генерации типа FixedPoint1024_8.
  • РЕДАКТИРОВАТЬ: И да, я только что узнал о пакете numbers, упомянутом выше - очень круто.

7
задан T. Stone 13 June 2009 в 00:57
поделиться

4 ответа

Я бы просто поместил его в список в начале:

from calendar import Calendar, SUNDAY

cal = Calendar(SUNDAY)
month_dates = list(cal.itermonthdates(year, month))

month_start = month_dates[0]
month_end = month_dates[-1]

Поскольку может быть только 42 дня (с учетом начального и конечного контекстов), это имеет незначительное влияние на производительность.

Также , лучше использовать ВОСКРЕСЕНЬЕ, чем магическое число.

11
ответ дан 6 December 2019 в 05:39
поделиться

Для этой конкретной проблемы, я думаю, я бы пошел с решением Мэтью Флашена. Мне это кажется наиболее простым.

Если ваш вопрос следует рассматривать в более общем плане, для любого генератора (с неизвестным и, возможно, большим количеством элементов), то что-то более похожее на подход RichieHindle может быть лучше. Моя небольшая модификация его решения состоит не в том, чтобы перечислять и проверять элемент 0, а в том, чтобы просто явно захватить первый элемент:

month_dates = cal.itermonthdates(year, month)
month_start = month_dates.next()
for date in month_dates:
    pass
month_end = date
2
ответ дан 6 December 2019 в 05:39
поделиться

Ричи понял правильную идею. Проще:

month_dates = cal.itermonthdates(year, month)
month_start = month_dates.next()
for month_end in month_dates: pass # bletcherous
11
ответ дан 6 December 2019 в 05:39
поделиться

Как насчет этого?

for i, date in enumerate(month_dates):
    if i == 0:
        month_start = date

month_end = date

enumerate () позволяет найти первую, а переменная date выпадает из цикла, чтобы получить последнюю.

10
ответ дан 6 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: