2010-10-10 11 views
7

spojrzałem w mojej książce oraz w dokumentacji, a to zrobił:co jest nie tak ze sposobem dzielenia łańcucha w pythonie?

a = "hello" 
b = a.split(sep= ' ') 
print(b) 

otrzymuję podział błędzie mówiąc() przyjmuje żadnych argumentów kluczowych. Co jest nie tak?

Chcę mieć ['h', 'e', ​​'l', 'l', 'o'] Próbowałem nie przechodzić sep i po prostu a.split ("'), i dostałem [' cześć „]

Odpowiedz

6

Python pozwala na określenie pojęcia o nazwie "argumenty słów kluczowych", gdzie można powiedzieć, który parametr przekazujesz w wywołaniu funkcji. Jednak standardowa funkcja split() nie przyjmuje tego rodzaju parametru.

Aby podzielić ciąg na liście znaków, należy list():

>>> a = "hello" 
>>> list(a) 
['h', 'e', 'l', 'l', 'o'] 

Tak na marginesie, to przykład parametrów słów kluczowych może być:

def foo(bar, baz=0, quux=0): 
    print "bar=", bar 
    print "baz=", baz 
    print "quux=", quux 

można nazwać działa na kilka różnych sposobów:

foo(1, 2, 3) 
foo(1, baz=2, quux=3) 
foo(1, quux=3, baz=2) 

Zobacz, jak zmienić kolejność parametrów słów kluczowych.

+0

list() wydaje się działać równie dobrze jak pętla for. Co jest bardziej wydajne? –

+0

@Jack S .: To zależy od tego, co chcesz zrobić, ale pętla 'for' może być najłatwiejsza, jeśli chcesz po prostu przejrzeć każdą postać. Utworzenie listy polega na przydzieleniu pamięci do listy i skopiowaniu każdego znaku, czego nie musiałaby robić pętla 'for'. –

4

spróbować tylko:

a = "hello" 
b = a.split(' ') 
print(b) 

zauważyć różnicę: a.split(' ') zamiast a.split(sep=' '). Mimo że dokumentacja nazywa argument "sep", tak naprawdę jest tylko w celach dokumentacyjnych. W rzeczywistości nie przyjmuje argumentów słów kluczowych.

W odpowiedzi na komentarzem OP w tym poście:

"a b c,d e".split(' ') oddziela "a b c, d, e" w tablicy łańcuchów. Każde znalezione słowo traktowane jest jako separator. Więc oddzielone ciągi są ["a", "b", "c,d", "e"]. "hello".split(' ') dzieli "cześć" za każdym razem, gdy widzisz spację, ale nie ma spacji w "cześć"

Jeśli chcesz tablicę liter, użyj list comprehension. [letter for letter in string], np. [letter for letter in "hello"], lub po prostu użyj konstruktora list, jak w list("hello").

+0

Powinienem być bardziej szczegółowe.Próbowałem to i dostałem ["cześć"], chcę ['h', 'e', ​​'l', 'l', 'o'] –

2

Podając łańcuch x The pythonowy sposób podzielić ją na poszczególnych znaków jest:

for c in x: 
    print c 

Jeśli koniecznie potrzebne listę następnie

redundant_list = list(x) 

Wzywam listę redundantny na ułamek smyczkową na listę znaków jest mniej zwięzły i często odzwierciedla wzorce sterowane ciągiem znaków C.

0

Spróbuj:

a = "hello" 
b = list(a)