python中的列表形成

时间:2010-07-15 05:34:58

标签: python

我需要在列表中放入3个项目。

  1. state..eg(1,2)
  2. 行动... eg..west
  3. 成本.... 5
  4. list=[(state,action,cost), (state,action,cost).........]

    我怎样才能以列表的形式制作它。对于特定的州,行动和成本就在那里。此外,如果我只需要列表中的状态,我应该能够从列表中提取它。也可以采取行动。

4 个答案:

答案 0 :(得分:3)

你的措辞非常模糊。现在你有一个元组列表(可怕的名为list,它从该范围的其余部分开始使用内置名称 - please 不要将内置名称重用为您自己的标识符......如果您无法想到更有意义且更有用的名称,请将其称为alistmylist!)。如果您想要列表,请输入代码:

alist = [[state, action, cost], [state, action, cost], ...]

如果要转换列表列表中的元组列表,

alist = [list(t) for t in alist]

(请参阅为什么永远不会篡夺内置标识符,例如list?! - )。

如果要将列表列表(或-of-tuples)展平为单个列表,

aflatlist = [x for t in alist for x in t]

访问例如“只是状态”(第一项),比如列表中的第N项,

justthestate = alist[N][0]

或者,如果你把它弄平了,

justhestate = aflatlist[N*3 + 0]

+ 0显然是多余的,但它可以告诉您如何处理费用,该费用将在+ 1等。

如果您想要一个包含所有州的列表,

allstates = [t[0] for t in alist]

allstates = aflatlist[0::3]

我敢肯定你的意思可能与你对这些神秘词汇的十几种可能的解释有所不同,但我现在已经没有果汁了; - )。

答案 1 :(得分:1)

我不确定我理解你问题的第一部分(“列表形式”)。您可以使用您声明的格式构建元组列表:

 mylist = [(1, 'west', 5), (1, 'east', 3), (2, 'west', 6)]
 # add another tuple 
 mylist.append((2, 'east', 7))

要仅提取状态或操作(即每个元组中的第一个或第二个项目),您可以使用列表推导:

states = [item[0] for item in mylist]
actions = [item[1] for item in mylist]

答案 2 :(得分:0)

上面列出的代码是一个元组列表 - 它几乎与您要求的内容相匹配。

从上面的例子中,list [0] [0]返回第一个元组的状态,list [0] [1]动作,并列出[0] [2]的成本。

您可以使用类似(状态,操作,成本)= list [i]的内容来提取值。

答案 3 :(得分:0)

试试这个

l = [('a',1,2),('b',3,4),('a',4,6), ('a',6,8)]

state = [sl[0] for sl in l]
or for more,
state = [sl[0] for sl in l if 'a' in sl]