2015-07-20 108 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

谢谢!是我刚刚发现的,所以非常感谢您的确认! –

相关问题