Распечатать следующие три элемента в списке - PullRequest
0 голосов
/ 03 мая 2019

У меня проблема с питоном. Сначала я хочу сохранить вывод моего цикла for в новой переменной. Во-вторых, я хочу выдать только первые три раза (20:00, 21:00, 22:00)

Может ли кто-нибудь помочь мне с этим?

ВХОД:


import datetime
import time


list = ["18:00","19:00", "20:00", "21:00", "22:00", "23:00"]

lol = time.strftime("%H:%M")


for i in list:
    if i > lol:
        print(i)

ВЫВОД:

20:00
21:00
22:00
23:00

Ответы [ 3 ]

2 голосов
/ 03 мая 2019

Попробуйте это:

new_variable = [time for time in list if time > lol][:3]
0 голосов
/ 03 мая 2019

Я выкладываю это так, чтобы вам было легче следовать.Когда кто-то плохо знаком с Python, такие вещи, как поведение со списком, могут быть ... непрозрачными.

Кстати, я фанат дополнительных операторов печати, поэтому я могу видеть, что делает код.Просто закомментируйте их, когда они вам больше не нужны.

Конечно, есть более компактные способы сделать это, ответ @ [Robert Hamilton] - отличный пример.

import datetime
import time

list = ["18:00","19:00", "20:00", "21:00", "22:00", "23:00"]
lol = time.strftime("%H:%M")
my_new_list = [ ] # here is your new variable, we'll start empty

for i in list:
    print('checking i={}, my_new_list={}'.format(i, my_new_list))
    if i > lol:
        if len(my_new_list) < 3:
            my_new_list.append(i)
            print('keeping i={} since i > lol, now my_new_list={}'.format(i, my_new_list))
        else:
            print('ignoring i={}, already have enough.').format(i))
    else:
        print('skipping i={}, since i <= lol={}'.format(i, lol))

С несколько более эффективным телом цикла (мы разрываем цикл после нахождения 3 вещей):

for i in list:
    if i <= lol:
        continue # keep looking
    # if we reach this point then i > lol.
    print('keeping i={}'.format(i)
    my_new_list.append(i)
    if len(my_new_list) >= 3:
        break
0 голосов
/ 03 мая 2019

Если вы хотите сохранить цикл for, вы можете добавить простой счетчик:

import datetime
import time


list = ["18:00","19:00", "20:00", "21:00", "22:00", "23:00"]

lol = time.strftime("%H:%M")

counter = 0

for i in list:
    if i > lol and counter < 3:
        print(i)
        counter += 1

Другой вариант - использовать понимание списка и выбрать первые три значения из списка.

values = [i for i in list if i > lol][:3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...