【问题标题】:How to delete element from list in Python?如何从 Python 列表中删除元素?
【发布时间】:2010-01-13 11:50:41
【问题描述】:

我是 python 新手。我已经创建了一个列表

a = [[3,4],[5],[6,7,8]]

我想从此列表中删除 3 个。这是什么命令?

【问题讨论】:

  • list 对您的对象来说是个坏名字,因为它会影响内置对象。
  • 你用的是什么教程?您在哪里阅读列表?

标签: python


【解决方案1】:

很多可能的方法

>>> mylist = [[3,4],[5],[6,7,8]]
>>> mylist[0] = [4]
>>> mylist
[[4], [5], [6, 7, 8]]
>>> mylist = [[3,4],[5],[6,7,8]]
>>> del mylist[0][0]
>>> mylist
[[4], [5], [6, 7, 8]]
>>> mylist = [[3,4],[5],[6,7,8]]
>>> mylist[0].remove(3)
>>> mylist
[[4], [5], [6, 7, 8]]

任你选:)

【讨论】:

  • +1 用于教人钓鱼。 (我还重新格式化并明确指出del 是一个语句,而不是一个函数。)
【解决方案2】:

简单,你可以试试这个

del a[0][0]

【讨论】:

    【解决方案3】:

    假设,您想从列表列表中删除所有 3:

    >>> lst = [[3,4],[5],[6,7,8]]
    >>> [[i for i in el if i != 3] for el in lst]
    [[4], [5], [6, 7, 8]]
    

    【讨论】:

    • 我投了赞成票,因为答案很有用,但经过一年多的 python 编程,我仍然看不到列出这样的理解比多行代码的优势不那么钝了。 ghostdog74 的答案几乎可以立即识别,而我总是不得不暂停并在精神上解析列表理解。
    • @Bryan:这怎么样? ghostdog74 的回答是不正确的,因为它只删除了一个 3 它也是深度嵌套的,ghostdog74 试图通过扁平化删除并使其更不可读或 python 来避免这种情况。
    • 我说它很迟钝,因为除非您使用了很多列表推导式,否则您必须在精神上解析正在发生的事情。所有开发人员几乎可以立即识别和理解嵌套循环,这比解析“i for i in el”之类的内容要快得多。也许我只是一只不会学习新技巧的老狗,但我更喜欢显式循环而不是单行列表推导式。
    • ghostdog74的回答有没有错,很难说。最初的问题是“我想删除 3”。不是所有 3。可以将其解释为“我想删除第一个嵌套列表的第一个元素”或“我想从第一个嵌套列表中删除 3”,或其他几种方式。
    • @Bryan:ghostdog74 的版本两者都没有。
    【解决方案4】:
    a[0].remove(3)
    

    (必须添加更多文本,所以足够长)

    【讨论】:

      【解决方案5】:

      使用这个:

      del a[0][0]
      

      为了更好地理解列表、字典等,我建议你阅读Dive Into Python 你会发现第 3 章非常有用。

      【讨论】:

        【解决方案6】:

        如果你不知道“3”在哪里,

        >>> for n,i in enumerate(list):
        ...   if 3 in i: list[n].remove(3)
        ...
        >>> list
        [[4], [5], [6, 7, 8]]
        >>>
        

        【讨论】:

          【解决方案7】:

          首先,要小心,因为您正在隐藏内置名称“list”。 这个

          a_list = [[3,4],[5],[6,7,3, 3, 8]]
          
          def clear_list_from_item(a_list, item):
             try:
                 while True: a_list.remove(item)
             except ValueError:
                 return a_list
          
          a_list = [clear_list_from_item(x, 3) for x in a_list]
          

          这将修改您的原始列表。

          【讨论】:

            【解决方案8】:

            如果我理解您的问题,您的列表中有一个列表,并且您想从第一个列表中删除第一个元素。所以使用:

            del a[0][0]
            

            【讨论】:

              【解决方案9】:

              两种从列表中删除的简单方法,如果您知道关注的元素位于位置 0:

              a[0].pop (0)
              del a[0][0]
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-03-10
                • 2010-10-13
                • 2015-02-11
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多