2016-05-20 2 views
0

Я пытаюсь использовать несколько условий внутри выражения, если-то еще, который, как:Python с использованием нескольких условий внутри цикла

from datetime import date, timedelta as td, datetime 
import holidays 

st_dt = '1/1/2017' 
en_dt = '1/5/2017' 

st_year = datetime.strptime(st_dt, "%m/%d/%Y").year 
en_year = datetime.strptime(en_dt, "%m/%d/%Y").year 
st_mnth = datetime.strptime(st_dt, "%m/%d/%Y").month 
en_mnth = datetime.strptime(en_dt, "%m/%d/%Y").month 
st_date = datetime.strptime(st_dt, "%m/%d/%Y").day 
en_date = datetime.strptime(en_dt, "%m/%d/%Y").day 

d1 = datetime(st_year, st_mnth, st_date, 0, 0, 0) 
d2 = datetime(en_year, en_mnth, en_date, 0, 0, 0) 

AllHours = [] 
i = 0 
while(d1<=d2): 
    AllHours.append(d1) 
    d1 = d1 + td(hours=1) 

us_holidays = holidays.UnitedStates() 
HolidayWorkingDay = ['H' if x in us_holidays else 'W' for x in AllHours] 
HE = [x.hour for x in AllHours]  
DayDefn = ['Type1' if (x == 'H' and y>=7 and y<=23) else 'Type2' for x in HolidayWorkingDay and for y in HE] 

Так, в приведенном выше я пытаюсь, чтобы убедиться, что если определенное место в списки HolidayWorkingDay и HE отвечают определенным критериям, я даю им имя «Type1», иначе они «Type2»

Но он не работает на последней строке из-за плохого синтаксиса. Я не уверен, что правильно писать множественное выражение является

+0

Что вы намерены что 'и у в Он немного в конце, чтобы сделать? – user2357112

+1

Где находится генератор? –

+1

см. Https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions ... особенно тот, который имеет как x, так и y. –

ответ

1

Если вы хотите, вложенные циклы, вы должны написать последний список понимание, как это (без and):

DayDefn = ['Type1' if (x == 'H' and y>=7 and y<=23) else 'Type2' 
      for x in HolidayWorkingDay for y in HE] 
Смежные вопросы