gpt4 book ai didi

python - 为什么 rstrip 不修改字符串列表

转载 作者:行者123 更新时间:2023-11-28 20:45:38 26 4
gpt4 key购买 nike

为什么 rstrip 不修改名为 instrumentList 的字符串列表

for instrument in instrumentList:
instrument = instrument.rstrip()

最佳答案

在 Python 中,str 是不可变的;你不能就地改变它。您可以使用 id 看到这一点(相同的 id 表示相同的对象):

>>> instrument = "guitar "
>>> id(instrument)
50103936
>>> instrument = instrument.strip()
>>> id(instrument)
49968576 # different object

rstrip 返回一个新的 str 对象,将其分配给 instrument 不会更改对象列表instrument 也引用在;该列表仍然引用旧对象:

>>> instruments = ["guitar "]
>>> id(instruments[0])
50103968
>>> instrument = instruments[0]
>>> instrument = instrument.rstrip()
>>> id(instrument)
49968576 # different object
>>> id(instruments[0])
50103968 # still the same in list

列表可变的,因此如果您有一个对象列表,您可以就地更改它,即无需创建新对象,例如通过添加新项目:

>>> instruments = ["guitar"]
>>> id(instruments)
50116048
>>> instruments.append("piano")
>>> instruments
['guitar', 'piano'] # more items
>>> id(instruments)
50116048 # same object

或者(这是你想要做的),更改特定索引引用的对象:

for index, instrument in enumerate(instruments):
instruments[index] = instrument.rstrip() # assign new object back into list

虽然 ramcdougal 的列表理解肯定更简洁。

关于python - 为什么 rstrip 不修改字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22862658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com