【问题标题】:(Python 2.7 IDE) Why wont .split() work in a function? [closed](Python 2.7 IDE)为什么 .split() 不能在函数中工作? [关闭]
【发布时间】:2015-07-20 16:13:55
【问题描述】:

当我只做一个变量时,我明白了。请看下面

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

【问题讨论】:

标签: python function python-2.7 split


【解决方案1】:

split() 返回您传递给它的字符串中的单词列表。在函数中调用变量 a 时,您没有更新它。

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

【讨论】:

  • 非常感谢有道理
【解决方案2】:

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']

【讨论】:

  • 所以python知道字母表就像它可以“排序”数字一样?
  • @corbshum 对不起,我没听清你能不能解释一下!
  • @corbshum Python 确实知道如何按字母顺序对字母进行排序,但我认为您误解了答案的那一部分。 Kasramvd 向您展示了如何在省略空格的同时制作一个字母字符列表(即按字母顺序排列)。似乎 Kasra 认为您想要一个包含每个字母的列表,而不是一个由空格分隔的列表。
  • 对不起,我确实错过了阅读它并删除了评论,但速度不够快!不过我学到了一些新东西,这很有意义,所以谢谢你的时间和helo
  • @SuperBiasedMan 很好解释,但我已经说过要获取所有字母的列表 OP 可以使用 list() 函数!
【解决方案3】:

您没有修改 a 字符串本身,因为 Python 字符串是不可变的。因为您在解释器中,所以它将打印函数返回的内容。这就是为什么您会在屏幕上打印列表。但是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'

【讨论】:

  • 谢谢你这是我刚刚发现的,所以感谢你这么快确认!
猜你喜欢
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多