列表中的条件 - Python
Condition in list - Python
我在 python 工作,我有这个列表
for i in range(0, len(state1)):
observations = [{'state_transitions': [{'state': state1[i],
'action': action[i],
'state_': state2[i]},],
'reward': 0},]
我想将 for 子句放在观察中,像这样(但这会给我一个错误):
observations = [
for i in range(0, len(state1)):
{'state_transitions': [{'state': state1[i],
'action': action[i],
'state_':state2[i]},],
'reward': 0},]
print observations;
谁能帮我解决这个问题?
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)
]
您要完成的任务(根据 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)
我在 python 工作,我有这个列表
for i in range(0, len(state1)):
observations = [{'state_transitions': [{'state': state1[i],
'action': action[i],
'state_': state2[i]},],
'reward': 0},]
我想将 for 子句放在观察中,像这样(但这会给我一个错误):
observations = [
for i in range(0, len(state1)):
{'state_transitions': [{'state': state1[i],
'action': action[i],
'state_':state2[i]},],
'reward': 0},]
print observations;
谁能帮我解决这个问题?
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)
]
您要完成的任务(根据 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)