Python如何从列表中移除元素?解决'tuple'无'remove'属性报错
问题分析与修复方案
错误根源
你定义的lista是元组(tuple),元组是Python里的不可变数据类型,不支持remove()这类修改元素的操作,这就是报错AttributeError: 'tuple' object has no attribute 'remove'的原因。
另外代码还有两个隐性问题:
- 你把输入的整数转成字符串去移除,但列表里存的是整数,类型不匹配,就算改成列表也会报错
- 函数里递归调用两次
aturn(),会导致无限递归,程序根本停不下来
修复后的代码
lista = [1,2,3,4,5,6,7,8,9,10] # 把元组改成可变的列表 def aturn(): print("\n\n\nPlayer A's turn...") numA = int(input()) if numA in lista: print("Yes") lista.remove(numA) # 直接用整数移除,不用转字符串 print(f"剩余元素: {lista}") else: print("No") # 循环执行直到列表清空 while lista: aturn() print("列表已清空,游戏结束!")
关键改动说明
- 将
()改成[],把不可变的元组换成可变的列表,这样就能使用remove()方法 - 移除元素时直接用
numA(整数类型),和列表里的元素类型保持一致 - 用
while lista循环替代递归,只要列表不为空就继续执行,列表清空后自动停止,避免无限递归
内容的提问来源于stack exchange,提问作者Tomas Whelan
相关产品推荐
相关产品推荐

