2010-07-15 6 views
2

Je dois mettre 3 éléments dans la liste.Création de liste en python

  1. state..eg (1,2)
  2. l'action
  3. ... eg..west
  4. coût .... 5

list=[(state,action,cost), (state,action,cost).........]

comment puis-je faire dans une forme de liste. Pour un état particulier, l'action et le coût sont là. De plus, si je n'ai besoin que d'un état de la liste, je devrais être capable de l'extraire de la liste.

+2

Quelle est exactement votre question? –

Répondre

1

Je ne suis pas sûr de comprendre la première partie de votre question ("forme d'une liste"). Vous pouvez construire la liste des tuples sous la forme que vous avez dit:

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

Pour extraire uniquement les états ou les actions (soit le premier ou le deuxième élément dans chaque tuple), vous pouvez utiliser la liste compréhensions:

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

Le code que vous avez indiqué ci-dessus est une liste de tuples - qui correspond à peu près à ce que vous demandez. Dans l'exemple ci-dessus, la liste [0] [0] renvoie l'état du premier tuple, liste [0] [1] l'action et liste [0] [2] le coût.

Vous pouvez extraire les valeurs avec quelque chose comme (état, action, coût) = liste [i] aussi.

3

Votre formulation est assez obscure. En ce moment vous avez une liste de tuples (horriblement nommé list, qui vole l'utilisation du nom intégré du reste de cette portée - s'il vous plaît ne pas réutiliser les noms intégrés comme vos propres identifiants .. appelez-les alist ou mylist, si vous ne pouvez pas penser à un nom plus significatif et utile!). Si vous voulez une liste de listes, le code:

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

Si vous voulez transformer la liste de tuples dans une liste de listes,

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

(voir pourquoi vous devriez jamais usurper identifiants intégrés tels que list?! -).

Si vous voulez aplatir la liste-des-listes (ou -Des triplets) dans une liste unique,

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

Pour accéder par exemple « Juste l'état » (article premier), par exemple de l'élément Nième dans la liste,

justthestate = alist[N][0] 

ou, si vous avez aplatir localement,

justhestate = aflatlist[N*3 + 0] 

(le + 0 est clairement redondant, mais il est là pour vous montrer quoi faire pour le coût, ce qui serait au + 1, etc).

Si vous voulez une liste avec tous les états,

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

ou

allstates = aflatlist[0::3] 

Je suis sûr que vous pourriez dire quelque chose de différent de cette douzaine d'interprétations possibles de vos mots Arcane, mais Je n'ai plus de jus maintenant ;-).

+0

ur genius..thanks ... pouvez-vous m'aider aussi dans mon autre question que j'ai posté avant .... http: //stackoverflow.com/questions/3252217/help-in-executing-the-code – Shilpa

+1

@Shilpa , le point fondamental de l'étiquette SO # 1: vous devez accepter la réponse qui vous aide le plus (en cliquant sur l'icône en forme de coche à côté) - le point # 2, qui ne joue que lorsque vous atteignez une réputation de 15, que vous devriez aussi _upvote_ réponses qui sont bonnes (vous ne pouvez en accepter qu'une seule, mais vous serez en mesure d'en faire autant que vous voulez, sans doute y compris celle que vous acceptez, une fois que vous aurez obtenu ce représentant). Vous constaterez que, à moins que vous ne le fassiez, les gens ne choisiront pas de consacrer autant de temps et d'énergie à répondre à vos questions. –

0

essayer cette

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]