在Python中对列表使用方法与对字符串使用方法

2024-04-20 07:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

关于我发现的一个问题,我有一个简短的问题。在pythonshell中,我可以编写test1 = "hello".upper(),当我键入test1时,我会得到"HELLO",正如预期的那样。然而,如果我对一个列表做了类似的操作,比如test2 = ["hello", "world"].reverse(),并且我试图返回test2,我什么也得不到;它是一个没有赋值的“NoneType”。为什么会这样?为什么我可以用一个作用在字符串上的方法来赋值,而当有一个作用在列表上的方法时我却不能赋值?你知道吗


Tags: 方法字符串hello列表world键入upperreverse
3条回答

有时可以用一个对象做一件事,而不能用另一个对象做不同的事,原因是不同的对象和不同的方法是不同的。每个方法的文档都说明了它的作用。您需要查看正在使用的单个方法的文档,以了解它的功能。没有理由假设someString.upper()将像someList.reverse()一样工作,因为字符串不是列表,而upper不是reverse。你知道吗

首先,字符串是不可变的,而列表是可变的。这意味着您可以更改现有列表对象:

>>> l = [1,2,3]
>>> id(l)
140370614775608
>>> l.append(4)
>>> l
[1,2,3,4]
>>> id(l)
140370614775608

但是,不能更改字符串对象;只能使用第一个作为起点来创建新的字符串对象。你知道吗

>>> s1 = "hello"
>>> id(s1)
140370614929376
>>> s1.upper()
'HELLO'
>>> id(s1)
140370614929376

在Python中,约定是一个方法要么修改一个对象并返回None,要么返回一个新的、修改过的对象,而保留原来的对象。你知道吗

这是因为^{}在原地反转。这意味着它返回None,因此当您执行test2 = ["hello", "world"].reverse()时,您将.reverse()None)的结果赋值给test2。你知道吗

相关问题 更多 >