列表中的条件 - Python

时间:2016-11-25 13:37:47

标签: python clause

我在python中工作,我有这个列表

customer

我想把for子句放在观察中,就像这样(但是这给了我一个错误):

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

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

Python确实有一个可以进入列表声明的for子句 - 但是在你的表达式之后放置 - 所以这可行:

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

除此之外,Python的for专为更高级别的交互而设计 - 如果您对序列中的每个项目感兴趣,而不是变量i本身,则可以使用zip打电话给你一个每个序列的项目:

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