【问题标题】:Python: Removing a single element from a nested listPython:从嵌套列表中删除单个元素
【发布时间】:2011-07-14 15:15:30
【问题描述】:

我无法弄清楚如何从嵌套列表中删除某些内容。

例如,如何从以下列表中删除“x”?

lst = [['x',6,5,4],[4,5,6]]

我尝试了del lst[0][0],但得到以下结果:

TypeError: 'str' 对象不支持删除项目。

我也尝试了 for 循环,但得到了同样的错误:

for char in lst:
    del char[0]

【问题讨论】:

  • 两者都适合我,正如我所料。检查这是否真的是你的代码。
  • 有趣的是,默认语法荧光笔将char 视为 Python 的特殊内容,因为它是蓝色的。没有称为char 的内置函数,也不是关键字。
  • @Maciej:语法高亮不是 Python 特有的。
  • 是的,我知道。这就是为什么我说它很有趣。最有趣的是 - 它将// 运算符视为评论。随着 Python3 的发布,该运算符将被广泛使用,并且越来越流行。 Stack Overflow 应该真的可以解决这个问题。更多:meta.stackexchange.com/questions/81906/…

标签: python nested-lists del


【解决方案1】:

您的代码运行良好。你确定lst 被定义为[['x',6,5,4],[4,5,6]] 吗?因为如果是,del lst[0][0] 有效地删除了'x'

也许你已经将lst定义为['x',6,5,4],在这种情况下,你确实会得到你提到的错误。

【讨论】:

    【解决方案2】:

    在嵌套列表中使用pop(i) 函数。例如:

    lst = [['x',6,5,4],[4,5,6]]
    lst[0].pop(0)
    print lst  #should print [[6, 5, 4], [4, 5, 6]]
    

    完成。

    【讨论】:

    • del lst[0][0] 也可以。并且假设 JG 是正确的(我能想到的唯一合理的解释),两者都会因 OP 的真实代码而失败。
    【解决方案3】:

    您也可以使用“pop”。例如,

    list = [['x',6,5,4],[4,5,6]]
    list[0].pop(0)
    

    会导致

    list = [[6,5,4],[4,5,6]]
    

    更多信息请参见此主题:How to remove an element from a list by index in Python?

    【讨论】:

    • 我要删除的“x”是符号“[”有区别吗?当我使用上面的列表时它有效,但不在我的列表中。如果我这样做 lst[0][0] 它确实返回 '[' 但它不会让我删除它。
    • Emily,请认真检查您的代码中是否正确输入了所有内容。奇怪的事情发生了。
    • 你说得对,我的列表没有正确创建。感谢您的帮助:)
    猜你喜欢
    • 2021-07-17
    • 2021-06-11
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多