Python中无法修改拆分后列表值的问题求助
Python中无法修改拆分后列表值的问题求助
嘿,我完全懂你现在的困惑!你遇到的问题核心是对split()方法的工作逻辑理解错了——每次调用split()都会生成一个全新的临时列表,你修改这个临时列表里的元素,根本不会影响原来healths中的字符串,因为它们是完全独立的对象,修改完临时列表就直接被丢弃了,自然看不到变化。
你之前碰到的“cannot assign to function call here”错误也很好解释:Python不允许直接给函数调用的结果(比如healths[ct].split(",")是一个函数调用)的索引位置赋值,因为这个结果是临时的,没有绑定到一个变量上,语法上不支持这种操作。
那正确的做法应该是把拆分后的列表存到一个变量里,修改完再合并成字符串替换回去,结合你的例子,改写后的代码如下:
strHealth = "1,8,4,3,/11,12,/" healths = strHealth.split("/") ct = int(input("Enter the creature type you're targeting: ")) - 1 cn = int(input("Enter the number of the creature you're targeting: ")) - 1 damage = int(input("Enter the amount of damage dealt: ")) # 1. 把目标字符串拆成可修改的列表,存到变量里 current_healths = healths[ct].split(",") # 2. 修改对应位置的生命值(转成整数计算再转回字符串) current_healths[cn] = str(int(current_healths[cn]) - damage) # 3. 把修改后的列表重新合并成字符串,替换回healths原位置 healths[ct] = ",".join(current_healths)
这样操作后,healths里的对应字符串就会被正确修改了。简单来说就是:拆分→修改→合并替换,三步缺一不可,不能跳过存储临时列表的步骤直接操作哦。
备注:内容来源于stack exchange,提问作者dirtydan
相关产品推荐
相关产品推荐

