python - obj.split() 和 obj 之间的区别

标签 python

当我输入此代码时:

phrase = 'I love my life'
phrase = phrase.split()
phrase.remove('I')
phrase

我得到了预期的结果:

['love', 'my', 'life']

但是,当我尝试使其更简洁时:

phrase = 'I love my life'
phrase.split().remove('I')
phrase

我得到了这个意想不到的结果:

'I love my life'

奇怪了,phrase =phrase.split()和这个对象phrase.split()有什么区别?当我们输入 type(phrase.split()) 时,它也是一个列表。

那么它们之间有什么区别呢?我不明白这个错误,有人可以向我解释一下吗?

最佳答案

str.split()

Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done (thus, the list will have at most maxsplit+1 elements). If maxsplit is not specified or -1, then there is no limit on the number of splits (all possible splits are made)...

字符串在Python中是不可变的。以上摘自 python docs.org。 在下面的代码中,第一种情况:

phrase = 'I love my life'   
phrase = phrase.split()
phrase.remove('I')

第 1 行:短语绑定(bind)到字符串对象的 var 名称,其值为“I love my life”。

第 2 行:短语绑定(bind)到列表对象的 var 名称!他不再指向前一个字符串,因为我们已将其指定为指向新的 py 对象。

第 3 行:list.remove() 适用于同一列表,如果列表中存在要删除的对象,则更新它。

代码片段2

phrase = 'I love my life'
phrase.split().remove('I')

第 1 行:短语绑定(bind)到字符串对象的 var 名称,其值为“I love my life”。

第 2 行:由于字符串是不可变的,因此解释器会为您完成工作并完成工作,但该表达式的结果未分配给任何 var 名称!如果你想获得相同的行为,你需要将结果分配给短语 var name 或用 Python 来说,重新绑定(bind)短语 var name。

请参阅下面的链接以进一步阅读

list.remove

str.split

关于python - obj.split() 和 obj 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62631166/

相关文章:

python - python中的hackerrank平均函数

python - 如何将spark rdd转换为numpy数组?

python - 如何在Python中使用selenium在不同WebDriver打开的不同chrome浏览器窗口之间切换?

python - 在 Python 2.7 中以编程方式创建列表的列表

python - 正则表达式重命名文件夹 Métamorphose

python - 在 bash 脚本中运行参数化的 python 脚本

python - 为什么 functools.partial 不返回一个真正的函数(以及如何创建一个真正的函数)?

python - 将 "Stamps"分成四分之一、十位、五位、二位和个位

python - 在 Keras 的 tokenizer 类中使用 num_words

python - 在 Python 上将日期格式 yyyy-m-d 转换为 yyyy-mm-dd