鱼C论坛

 找回密码
 立即注册
查看: 1117|回复: 8

[已解决]修改列表中的字符串

[复制链接]
发表于 2023-8-2 10:33:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
要求是将列表中所有姓张的元素,改成姓王的

红框框起来的代码,我本来以为可以实现这个功能,就是取字符串的名,然后加上“王”姓,拼成符合要求的字符串,再将这个字符串赋值给遍历到的列表元素

但是打印出来的结果,列表中的元素没有变化

请问各位大佬这是为什么啊
最佳答案
2023-8-2 10:37:44
你需要改动 lst ,但是在这个示例中你只改动了 item,所以不会对 lst 造成影响。
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-2 10:33:32 | 显示全部楼层
在理解您的问题后,我注意到您提到的代码中存在一些问题。首先,我们需要看一下您的代码以便更好地解释问题所在。请提供标有红框的代码部分。

此外,请确保提供示例输入列表以及预期的输出列表,这样我可以更好地帮助您找到问题所在并提供正确的解决方案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-8-2 10:33:45 | 显示全部楼层
修改列表中的字符串

根据你的描述,你想要将列表中所有姓"张"的元素改成姓"王"的元素。你的思路是取出字符串的名字部分,加上"王"姓,然后赋值给对应的列表元素。

以下是一个示例程序,展示了如何实现这个功能:
  1. # 输入列表
  2. names = ["张三", "李四", "张五", "王小红", "张六"]
  3. # 遍历列表元素
  4. for i in range(len(names)):
  5.     # 检查是否以"张"姓开头
  6.     if names[i].startswith("张"):
  7.         # 提取名字部分并加上"王"姓
  8.         name = "王" + names[i][1:]
  9.         # 修改列表元素的值
  10.         names[i] = name
  11. # 打印结果
  12. print(names)
复制代码

在上面的示例中,我们首先定义了一个名为names的列表,其中包含了不同的姓名。然后我们使用for循环遍历列表中的每个元素。在循环体中,我们检查当前的元素是否以"张"姓开头,如果是,则提取出名字部分,加上"王"姓,赋值给变量name。最后,我们将name赋值给列表中对应的元素,以实现修改列表的目的。

请确保你的代码逻辑正确,以及变量命名没有错误。如果你的代码还是不能达到预期的结果,请检查是否有其他原因导致列表元素没有改变。例如,你可能忘记了重新赋值给正确的列表变量,或者修改的是列表的副本而不是原始列表。

希望这个示例对你有所帮助。如果还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 10:36:37 | 显示全部楼层
Mike_python小 发表于 2023-8-2 10:33
修改列表中的字符串

根据你的描述,你想要将列表中所有姓"张"的元素改成姓"王"的元素。你的思路是取出字符 ...

您好,除了提供正确代码外,您能告诉我我的代码哪里出现问题了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 10:37:44 | 显示全部楼层    本楼为最佳答案   
你需要改动 lst ,但是在这个示例中你只改动了 item,所以不会对 lst 造成影响。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 10:40:44 | 显示全部楼层
tommyyu 发表于 2023-8-2 10:37
你需要改动 lst ,但是在这个示例中你只改动了 item,所以不会对 lst 造成影响。

您好,也就是说,这个item是当前遍历的列表元素的一个副本,改变item,并不能改变列表的元素,是这样理解吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 10:41:24 | 显示全部楼层
巨兔12138 发表于 2023-8-2 10:40
您好,也就是说,这个item是当前遍历的列表元素的一个副本,改变item,并不能改变列表的元素,是这样理解 ...

item 相当于是全新的一个变量,与 lst 无关。您的理解是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-2 10:42:04 | 显示全部楼层
tommyyu 发表于 2023-8-2 10:41
item 相当于是全新的一个变量,与 lst 无关。您的理解是正确的。

好的,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-2 12:12:34 | 显示全部楼层
lst=["赵敏","张绍刚","赵本山","张无忌","武则天","嬴政","马超"]

for i in range(len(lst)):
    if lst[i].startswith("张"):
        lst[i]="王"+lst[i][1:]
        
print(lst)

改成这样就行了,看下有没有哪里没看懂的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表