【问题标题】:Removing sublists contained within a list [duplicate]删除列表中包含的子列表[重复]
【发布时间】:2018-05-13 13:28:38
【问题描述】:

我正在尝试删除列表中除整数之外的所有元素。我可以删除字符串和布尔值,但我无法根据下面的代码删除列表。

messy_list = ["a", 2, 3, 1, False, [1, 2, 3]]

for idx, val in enumerate(messy_list):
    if type(val) != int:
        messy_list.pop(idx)

print(messy_list)

【问题讨论】:

    标签: python python-3.x list nested-lists


    【解决方案1】:

    函数式方法怎么样?

    >>> messy_list = ["a", 2, 3, 1, False, [1, 2, 3]]
    >>> filter(lambda x: type(x)==int, messy_list)
    [2, 3, 1]
    

    【讨论】:

    • [x for x in messy_list if type(x) == int]
    【解决方案2】:

    问题不在于子列表,而在于您在迭代原始列表时正在修改它。

    改为迭代副本:

    messy_list = ["a", 2, 3, 1, False, [1, 2, 3]]
    
    for val in list(messy_list):
        if type(val) != int:
            messy_list.remove(val)
    
    print(messy_list) # [2, 3, 1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多