Python使用remove(list[-1])无法删除列表最后一个元素问题排查
问题原因
Python内置的list.remove(value)方法的逻辑是按照传入的值匹配,删除列表中第一个出现的对应元素,而非按索引删除。
你代码中new_2.remove(new_2[-1])的执行逻辑是:先取到列表最后一位的元素值(例如处理"seconds"时取到的值是s),再调用remove方法寻找列表中第一个s删除,自然就会删掉开头的s而非末尾的。
修复方案
要删除列表/字符串的最后一位,有两种更简单的实现方式,完全不需要调用remove方法:
- 方案1:使用列表
pop()方法,该方法默认按索引删除最后一位元素
把出错行替换为new_2.pop()即可 - 方案2(更推荐):直接对原始字符串做切片操作,不需要转列表再拼接,性能更高写法更简洁
你原代码里转列表、删元素、再转回字符串的操作完全可以简化为对new_1直接切片,修改后的对应代码段如下:
if new == '1': print(new, end = ' ') new_1 = random.choice(time_2) # 字符串[:-1] 直接返回去掉最后一位的新字符串 print(new_1[:-1], '\n')
内容的提问来源于stack exchange,提问作者user16764063
相关产品推荐
相关产品推荐

