2010-11-18 20 views
2

Tek tek karakterlerin listesine bölmek istediğim uzun bir karakter dizim var. Whitespac'ları listenin üyeleri olarak eklemek istiyorum. Bunu nasıl yaparım?Python'daki bir listeye bir dizgeyi bölme

+3

Bunu yapmak zorunda değilsiniz, çünkü bir dize zaten bir karakter dizisidir. Lütfen ne yaptığınızı düşündüğünüze dair bir örnek verin. –

+3

Bir dize ve bir karakter listesi arasındaki bir fark, bir listenin değişebilir olmasıdır. Bu yüzden karakter dizisinin bu formata dönüştürülmesini istiyor musunuz? Pek çoğunda pek çok açıdan olmasalar da çok benzerler ve aynı operasyonlar da yapılabilir (bu yüzden onları yalnız bırakmak mantıklı olabilir). – martineau

+0

@martineau: Ama yeni bir dizge oluşturmak genellikle çok verimli olduğundan, bir "liste olarak dize" mutasyonu gerçekten çok faydalı değildir. Tahmin etmekten ziyade bu sorunun etrafındaki bazı gerçek bağlamı görmek faydalı olacaktır. Bir tasarım problemi olduğunu düşünüyorum, ama gerçekler olmadan, amacın ne olduğunu söylemek zor. –

cevap

11

Yapabileceğiniz:

list('foo') 

alanlarda liste üyeleri olarak işlem görecektir İşte

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

Zaman ayırdığınız için teşekkür ederiz. Yukarıdaki cevabın bana yardımcı olabileceğini düşünüyorum. – Rameses

+0

Yapmaya çalıştığım şey, başka bir .txt dosyasından beyaz boşluk içeren bir dize okumaktır. Bu dosya sadece "X" veya "" (boşluk) içerir. – Rameses

+0

Bunu iki boyutlu bir harita oluşturmak için kullanacağım. İki boyutlu diziler görünüşe göre Python tarafından desteklenmediğinden, iç içe geçmiş listeleri kullanmam gerekiyor. – Rameses

0

dize bazı karşılaştırılması (araya getirilmemiş olsa, ama sen gerekli belirtmek vermedi) ve gerçek zamanlı kullanım listesinde dize açık bir şekilde listelenmesi için başka bir yol listesi():

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
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, değişmez olmak gayet iyi sözlüğü olun:Bu yukarıdaki yorumlar asıl soruya ancak 'ı dict seçeneğini kullanın nasıl' (simüle etmek 2B dizi) için çözüm değil anahtarlar. Izgaradaki hücreler, siz onları atayana kadar mevcut değildir, bu yüzden, eğer bu bir şey değilse seyrek diziler için çok etkilidir.