我在python中工作,我有这个列表
customer
我想把for子句放在观察中,就像这样(但是这给了我一个错误):
for i in range(0, len(state1)):
observations = [{'state_transitions': [{'state': state1[i],
'action': action[i],
'state_': state2[i]},],
'reward': 0},]
任何人都可以帮我吗?
答案 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)
]