2016-11-25 9 views
0

나는 파이썬에서 일하고 나는이 목록을조건 - 파이썬

for i in range(0, len(state1)): 
    observations = [{'state_transitions': [{'state': state1[i], 
              'action': action[i], 
              'state_': state2[i]},], 
        'reward': 0},] 

이 나는 ​​관찰 내부 절,이 같은의를 설정하고 싶은 (그러나 이것은 나에게 오류를주고있다)

observations = [ 
    for i in range(0, len(state1)): 
     {'state_transitions': [{'state': state1[i], 
           'action': action[i], 
           'state_':state2[i]},], 
     'reward': 0},] 
print observations; 

아무도 도와 줄 수 있습니까?

+1

나는 당신이 무슨 말을하는지 이해한다면 당신은 지능형리스트를 원하는 생각합니다. 첫 번째 코드 비트는 모든 반복마다 '관찰'을 덮어 씁니다. –

+0

for 루프는 목록 안에 넣을 수 없습니다. – Ezio

답변

3

달성하려고하는 것 (for 루프의 결과를 기반으로 목록을 만드는 것)은 목록 이해율이라고합니다. 구문은 다음과 같습니다. my_list = [do_something(item) for item in my_iterable].

주는 :

observations = [ 
    { 
     'state_transitions': [ 
      { 'state': state1[i], 'action': action[i], 'state_':state2[i] }, 
     ], 
     'reward': 0 
    } for i in range(0, len(state1)) 
] 
print(observations) 
1

파이썬 목록 선언 안에 갈 수있는 절에 대한 기능 A를 않습니다 -하지만 후 식을 을 배치 - 그래서이 작동합니다 : higer의 elvel의 interations 위해 설계 파이썬의 for 그 외에

observations = [{ 
    'state_transitions': [{ 
     'state': state1[i], 'action': action[i], 'state_':state2[i] 
      }], 
    'reward': 0 
    } for i in range(0, len(state1)) 
] 

을, - 무엇을 관심하는 것은 당신이 순서의 각 항목에, 그리고 변수 i 자체 인 경우, 각 순서의 당신에게 하나 개의 항목을 산출하기 zip 전화를 사용할 수 있습니다

observations = [{ 
    'state_transitions': [{ 'state': st1, 'action': act, 'state_':st2}], 
    'reward': 0 
    } for st1, act, st2 in zip(state1, action, state2) 
] 
+1

구문이 올바르지 않으면'for' 뒤에':'을 제거하십시오. – Guillaume

+0

고침 - 고정. – jsbueno