2015-07-20 104 views
-3

當我只是做一個變量,我得到這個。請看下面(Python 2.7 IDE)爲什麼不能.split()在函數中工作?

a = 'a d c' 
a 
'a d c' 
a.split() 
['a', 'd', 'c'] 

當我做功能,我得到這個。請參閱下面

def x(): 
    a = 'abc ash avs' 
    a.split() 
    print a 

x() 
abc ash avs 
+0

分裂()代替不分裂,它返回一個列表:字= a.split() – Joucks

+0

[將字符串拆分爲Python中的列表](http://stackoverflow.com/questions/743806/split-string-into-a-list-in-python) – Joucks

回答

0

的方法split()分裂你的字符串基於空白,當你不傳遞一個特定的參數。所以在你的功能中,它根據空格分割了'abc ash avs'

如果你想要的字符可以使用list函數。

>>> a = 'abc ash avs' 
>>> list(a) 
['a', 'b', 'c', ' ', 'a', 's', 'h', ' ', 'a', 'v', 's'] 

如果你想字母字符,你可以使用列表理解,讓他們:

>>> [i for i in a if i.isalpha()] 
['a', 'b', 'c', 'a', 's', 'h', 'a', 'v', 's'] 
+0

因此python知道字母表可以「排序」數字嗎? –

+0

@corbshum對不起,我沒有讓你能解釋更多! – Kasramvd

+0

@corbshum Python確實知道如何按字母順序排序字母,但我認爲你誤解了答案的這一部分。 Kasramvd向你展示瞭如何製作一個字母列表(即按字母順序排列),同時忽略空格。卡斯拉似乎認爲你想要的是每個字母的列表,而不是空格分隔的列表。 – SuperBiasedMan

2

split()返回您傳遞它的字符串中的單詞列表。在您的函數中調用它時,您沒有更新變量a

def x(): 
    a = 'abc ash avs' 
    a = a.split() 
    print a 
+0

非常感謝 –

0

因爲Python中的字符串是不可變的你不修改a字符串本身。因爲你在解釋器中,它將打印一個函數返回的內容。這就是爲什麼你在屏幕上打印列表。但x函數不返回分割列表,僅打印a

您會看到您預期的結果,如果你切換到這一點:

def x(): 
    a = 'abc ash avs' 
    print a.split() 

你能明白我的意思大約a不被修改此:

a = 'a d c' 
a 
'a d c' 
a.split() 
['a', 'd', 'c'] 
a 
'a d c' 
+0

謝謝!是我剛剛發現的,所以非常感謝您的確認! –

相關問題