2010-11-18 5 views
2

J'ai une longue chaîne de caractères que je veux diviser en une liste de caractères individuels. Je veux également inclure les espaces blancs en tant que membres de la liste. Comment puis-je faire cela?Scinder une chaîne en une liste en python

+3

Vous n'avez pas besoin de faire cela, car une chaîne est déjà une séquence de caractères. S'il vous plaît fournir un exemple de ce que vous pensez que vous faites. –

+3

Une différence entre une chaîne et une liste de caractères est qu'une liste est modifiable. Est-ce la raison pour laquelle vous voulez que la séquence de caractères soit convertie dans ce format? Dans beaucoup, sinon la plupart des autres aspects, ils sont très similaires et les mêmes opérations peuvent être effectuées sur l'un ou l'autre (il serait donc logique de les laisser seuls). – martineau

+0

@martineau: Mais muter une "chaîne en tant que liste" n'est pas vraiment très bénéfique, car la création de nouvelles chaînes est généralement si efficace. Il serait utile de voir un certain contexte autour de cette question plutôt que de deviner. Je pense que cela indique un problème de conception, mais sans faits, il est difficile de dire quel est le but. –

Répondre

11

vous pouvez faire:

list('foo') 
espaces

seront traités comme des membres de la liste (mais pas regroupés, mais vous ne précisaient pas que vous aviez besoin que)

>>> list('foo') 
['f', 'o', 'o'] 
>>> list('f oo') 
['f', ' ', 'o', 'o'] 
+0

Merci pour votre temps et vos réponses. Je pense que la réponse ci-dessus pourrait m'aider. – Rameses

+0

Ce que j'essaie de faire est de lire une chaîne qui comprend des espaces blancs, à partir d'un autre fichier .txt. Ce fichier contient juste "X" ou "" (espaces). – Rameses

+0

Je vais l'utiliser pour construire une carte en deux dimensions. Puisque les tableaux bidimensionnels ne sont apparemment pas supportés par Python, je dois utiliser des listes imbriquées. – Rameses

0

Voici quelques comparision sur la corde et une liste de chaînes, et une autre façon de faire une liste de chaîne explicitement pour le plaisir, dans la vie réelle use list():

b='foo of zoo' 
a= [c for c in b] 
a[0] = 'b' 
print 'Item assignment to list and join:',''.join(a) 

try: 
    b[0] = 'b' 
except TypeError: 
    print 'Not mutable string, need to slice:' 
    b= 'b'+b[1:] 

print b 
0

Ce n'est pas une réponse à la question initiale, mais à votre « comment puis-je utiliser l'option dict » (pour simuler un tableau 2D) dans les commentaires ci-dessus:

WIDTH = 5 
HEIGHT = 5 

# a dict to be used as a 2D array: 
grid = {} 

# initialize the grid to spaces 
for x in range(WIDTH): 
    for y in range(HEIGHT): 
     grid[ (x,y) ] = ' ' 

# drop a few Xs 
grid[ (1,1) ] = 'X' 
grid[ (3,2) ] = 'X' 
grid[ (0,4) ] = 'X' 

# iterate over the grid in raster order 
for x in range(WIDTH): 
    for y in range(HEIGHT): 
     if grid[ (x,y) ] == 'X': 
      print "X found at %d,%d"%(x,y) 

# iterate over the grid in arbitrary order, but once per cell 
count = 0 
for coord,contents in grid.iteritems(): 
    if contents == 'X': 
     count += 1 

print "found %d Xs"%(count) 

Tuples, étant immuable, rendre parfaitement bon dictionnaire clés. Les cellules de la grille n'existent pas jusqu'à ce que vous les attribuiez, donc c'est très efficace pour les tableaux clairsemés si c'est votre truc.

Questions connexes