【问题标题】:Python: How can I update the list in a function?Python:如何更新函数中的列表?
【发布时间】:2018-08-06 22:28:07
【问题描述】:

在以下可执行程序中,我创建了一个列表。还有一个删除特定元组的功能。当我运行这个程序时,系统会提示用户输入一个元素。然后你会看到我给remove_tuple_from_list()-function 提供了曾经创建的列表和要删除的元素。现在我有一个问题:调用函数后的打印显示列表中的相同元素。我假设一旦我将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

【问题讨论】:

    标签: python-2.7 list


    【解决方案1】:

    raw_input() 返回一个字符串,而不是一个元组。您应该改用input(),以便您的输入可以作为元组进行评估。您的remove_tuple_from_list() 也不会从list_tuple 中删除delete_element,因为它只是将element[index]delete_element 进行比较,而它应该只是将elementdelete_element 进行比较。而且,它为list_tuple 分配了一个新的列表引用,因此调用者的list_tuple 永远不会更新。您应该使用切片运算符更新list_tuple

    list_tuple = [("100", 'AAA'), ("80", 'BBB'), ("20", 'CCC'), ("40", 'DDD')]
    
    def remove_tuple_from_list(list_tuple,
                               delete_element):
        list_tuple[:] = [element for element in list_tuple if not element == delete_element]
    
    if __name__ == "__main__":
    
        print "Before: list_tuple", list_tuple
        print ""
        delete_element = input('Enter Element to be deleted: ')
    
        remove_tuple_from_list(list_tuple = list_tuple, delete_element = delete_element)
    
        print "After: list_tuple", list_tuple
    

    给定("100", 'AAA')的输入,上述输出:

    After: list_tuple [('80', 'BBB'), ('20', 'CCC'), ('40', 'DDD')]
    

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多