首页 > 解决方案 > Python中的字符串

问题描述

给定这个例子:

string1 = 'Pythan' # String object
string1[4] = '0'

尝试修改索引值 4 时,会导致错误,'str' object does not support item assignment.

对此的解决方案是首先将字符串转换为列表:

list1=list(string1)
print(string1)

输出

['P', 'y', 't', 'h', 'a', 'n']

现在将第四个元素更改为 'o' 有效:

list1[4] = 'o'  #Now this modifies the 4th element.
print(list1) 

问题:

如果您选择列表中的任何特定元素并检查其类型 ( type(list1[4])),那么它将返回'str'。为什么允许修改它,因为元素是字符串并且字符串是不可变的?

标签: pythonlist

解决方案


list1[4] = 'o'

此语句创建一个新的字符串对象并将其分配给 中的第 5 个元素list1

为了说明使用该id()功能

def print_list(input_list):
    print(input_list)
    print([id(elem) for elem in input_list])

example_list = list("Pythan")
print_list(example_list)

example_list[4] = "o"
print_list(example_list)

输出

$ python3 test.py
['P', 'y', 't', 'h', 'a', 'n']
[140304019637840, 140304019089704, 140304019843648, 140304019687776, 140304019613992, 140304020050696]
['P', 'y', 't', 'h', 'o', 'n']
[140304019637840, 140304019089704, 140304019843648, 140304019687776, 140304019638120, 140304020050696]

注意所有元素的内存地址是如何相同的,除了被替换的元素。


推荐阅读