在以下可执行程序中,我创建了一个列表。还有一个删除特定元组的功能。在运行此程序时,系统会提示用户输入一个元素。之后,您会看到我为remove_tuple_from_list()
函数提供了一次创建的列表和要删除的元素。现在我有一个问题:调用函数后的打印显示了列表中相同的元素。我假设将list_tuple
提交给remove_tuple_from_list()
函数并将相应的元素从列表中删除后,曾经创建的列表就被更新了。
我的想法是将现有列表提供给函数,对其进行编辑,然后更新现有列表。
list_tuple = [("100", 'AAA'), ("80", 'BBB'), ("20", 'CCC'), ("40", 'DDD')]
def remove_tuple_from_list(list_tuple,
delete_element,
index = 0):
list_tuple = [element for element in list_tuple if not element[index] == delete_element]
if __name__ == "__main__":
print "Before: list_tuple", list_tuple
print ""
delete_element = raw_input('Enter Element to be deleted: ')
remove_tuple_from_list(list_tuple = list_tuple, delete_element = delete_element)
print "After: list_tuple", list_tuple
答案 0 :(得分:1)
raw_input()
返回一个字符串,而不是一个元组。您应该改用input()
,以便您的输入可以评估为元组。您的remove_tuple_from_list()
也不执行从delete_element
中删除list_tuple
的操作,因为它在将element[index]
与{{1 }}。而且,它还为delete_element
分配了一个新的列表引用,因此调用者的element
永远不会更新。您应该改为使用切片运算符更新delete_element
:
list_tuple
给出list_tuple
的输入,以上输出:
list_tuple