python - 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'
。为什么允许修改它,因为元素是字符串并且字符串是不可变的?
解决方案
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]
注意所有元素的内存地址是如何相同的,除了被替换的元素。
推荐阅读
- powershell - 如果获取的文件内容超过 2 行,则发送电子邮件
- simulator - 如何向 RISCV 交叉编译器添加自定义指令?
- reactjs - 使用 React Hooks 的生命周期问题
- javascript - 如何在 JavaScript 中删除 JSON 数据的第一个和最后一个双引号和反斜杠
- sorting - 对数组进行快速排序
- python - 如何在 PyTorch 中计算点集和线之间的成对距离?
- java - java.lang.IllegalStateException:无法加载 ApplicationContext - Oracle11g + Hibernate + Spring Data JPA
- javascript - 当子组件发生变化时使用 useEffect 重新渲染组件
- c - 函数返回指向数组的指针 - 转换并获取值
- r - 如何获取数据中首先出现的第一行?