无法按索引删除项目 - 'NoneType' 对象不能解释为整数 - Python
Can't remove an item by its index - 'NoneType' object cannot be interpreted as an integer - Python
我有一个包含元素的嵌套列表。我希望用户在 he/she 键入列表索引时删除一个列表:假设用户键入:“0”,因此 ['elem', 'elem1', 'elem2']
将被删除。
0 ['elem', 'elem1', 'elem2']
1 ['elem3', 'elem4', 'elem5']
2 ['elem6', 'elem7', 'elem8']
3 ['elem9', 'elem', 'elem10']
我的代码可以在没有该函数的情况下运行,但是当我尝试创建一个函数时,我收到一个我不理解的错误。
TypeError: 'NoneType' object cannot be interpreted as an integer
database = [['elem', 'elem1', 'elem2'],
['elem3', 'elem4', 'elem5'],
['elem6', 'elem7', 'elem8'],
['elem9', 'elem', 'elem10']]
def remove_from_database(index):
if index in database:
database.pop(index)
return index
else:
print("not here")
for index, elem in enumerate(database):
print(index, elem)
user = remove_from_database(int(input("type in the index to remove: ")))
result = database.pop(user)
print(f"removed: {result}")
有人能告诉我这个错误是什么意思吗?这是否意味着索引实际上不是一个整数?我该如何解决?
你的问题出在你的 "def remove_from_database(index)" 上。
您在数据库中检查“0” - 当然它不会在那里。
如果你像这样重写你的方法,它将起作用:
def remove_from_database(index):
try:
database.pop(index)
except:
print("Not in here")
你的错误很少。您已尝试从数据库外部方法再次弹出元素,您的 if 比较将无法正常工作。
database = [['elem', 'elem1', 'elem2'],
['elem3', 'elem4', 'elem5'],
['elem6', 'elem7', 'elem8'],
['elem9', 'elem', 'elem10']]
def remove_from_database(index):
if index < len(database):
return database.pop(index)
else:
print("not here")
return None
for index, elem in enumerate(database):
print(index, elem)
user = int(input("type in the index to remove: "))
result = remove_from_database(user)
print(f"removed: {result}")
#in older Python ver
#print("removed: {0}".format(result))
除了if else
,您还可以使用@Markus 的建议,它应该会更好。
我有一个包含元素的嵌套列表。我希望用户在 he/she 键入列表索引时删除一个列表:假设用户键入:“0”,因此 ['elem', 'elem1', 'elem2']
将被删除。
0 ['elem', 'elem1', 'elem2']
1 ['elem3', 'elem4', 'elem5']
2 ['elem6', 'elem7', 'elem8']
3 ['elem9', 'elem', 'elem10']
我的代码可以在没有该函数的情况下运行,但是当我尝试创建一个函数时,我收到一个我不理解的错误。
TypeError: 'NoneType' object cannot be interpreted as an integer
database = [['elem', 'elem1', 'elem2'],
['elem3', 'elem4', 'elem5'],
['elem6', 'elem7', 'elem8'],
['elem9', 'elem', 'elem10']]
def remove_from_database(index):
if index in database:
database.pop(index)
return index
else:
print("not here")
for index, elem in enumerate(database):
print(index, elem)
user = remove_from_database(int(input("type in the index to remove: ")))
result = database.pop(user)
print(f"removed: {result}")
有人能告诉我这个错误是什么意思吗?这是否意味着索引实际上不是一个整数?我该如何解决?
你的问题出在你的 "def remove_from_database(index)" 上。 您在数据库中检查“0” - 当然它不会在那里。
如果你像这样重写你的方法,它将起作用:
def remove_from_database(index):
try:
database.pop(index)
except:
print("Not in here")
你的错误很少。您已尝试从数据库外部方法再次弹出元素,您的 if 比较将无法正常工作。
database = [['elem', 'elem1', 'elem2'],
['elem3', 'elem4', 'elem5'],
['elem6', 'elem7', 'elem8'],
['elem9', 'elem', 'elem10']]
def remove_from_database(index):
if index < len(database):
return database.pop(index)
else:
print("not here")
return None
for index, elem in enumerate(database):
print(index, elem)
user = int(input("type in the index to remove: "))
result = remove_from_database(user)
print(f"removed: {result}")
#in older Python ver
#print("removed: {0}".format(result))
除了if else
,您还可以使用@Markus 的建议,它应该会更好。