【发布时间】:2019-06-21 14:13:24
【问题描述】:
我是 Python 新手,我正在尝试学习有关列表的知识。在这种情况下,我的目标是索引、计数和删除列表中元素的所有实例。索引,计数和删除都可以单独工作,但我正在努力合并它并获得所需的结果。我做错了什么?
def removing(letter,lst):
'''This function should index and remove all entries of a letter within a list, returning the removed items' position within the original list. I then use len() function on the result-list to determine how many items have been indexed/deleted'''
result=[]
offset= -1
list_new = lst.copy()
while True:
try:
offset=list_new.index(letter, offset+1)
except ValueError:
return result
print('Letter not found.')
result.append(offset)
lst.remove(letter)
现在我希望即使不克隆列表,这也能解决问题,函数返回字母的位置并删除它们,但是当我定义 lst 和 letter 时,运行函数然后说:
print(len(removing(letter,lst)))
它总是说 0。这是为什么呢?
编辑:有人建议我调用一次函数并存储结果,但是当我执行以下操作时,结果是一样的:
c=1
print(lst)
while (c==1):
letter=input('What letter do you want to remove?\n')
if letter in lst:
var=removing(letter,lst)
print(var)
print(str(len(var))+' letters have been removed.')
print(lst)
else:
c-1
【问题讨论】:
-
你用什么输入来测试这个?我尝试的前几个似乎工作正常。
-
只是一个小问题,但是在您的 return 语句之后有
print('Letter not found.')...该行将永远不会被执行。 -
@TrebuchetMS 好的,很高兴知道,为什么? :-)
-
@PatrickHaugh 对于我使用的输入(测试方式): satz='Dies soll in eine Liste übertragen werden。' lst=[] lst.extend(satz)
-
这个函数应该修改传入的列表吗?
lst.remove(letter)正在删除lst中的所有字母,因此当您再次调用removing时,列表中还剩下 0 个该字母。
标签: python python-3.x list function