【问题标题】:Delete lists that have a certain amount of elements in Python在 Python 中删除具有一定数量元素的列表
【发布时间】:2020-10-13 22:56:12
【问题描述】:

我有当前列表

[['A', 'B', 'C'],
 ['A', 'B', 'D'],
 ['A', 'B', 'C', 'D'],
 ['A', 'C', 'D'],
 ['B', 'C', 'D']]

我想删除列表 ['A', 'B', 'C', 'D']。有没有办法通过检查列表内部并删除列表(如果它有超过 3 个元素)来做到这一点? 谢谢

我知道我可以遍历整个列表,并添加长度为 3 的元素。但我认为这不是很有效

【问题讨论】:

  • 使用检查len(element)的列表理解
  • StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 或者如果您是初学者,请使用一个循环来检查较大列表中的每个元素并在满足您的条件时保留它

标签: python python-3.x list python-2.7 variables


【解决方案1】:

使用列表推导!

[ x for x in array ]

将按原样返回数组。 x 表示数组中的一个元素,在您的情况下,是您要检查其长度的子数组。

您可以为此添加条件进行过滤:

[ x for x in array if ... ]

这将返回数组,但仅适用于在 if 之后通过条件的元素 x

因此,您需要使用 len 函数检查 x 的长度。在这种情况下,您的列表理解应该只在 len(x) <= 3 时包含 x

本着学习的精神,我没有给你字面上的答案,但你应该能够将这些信息拼凑在一起。

玩转列表推导,它们非常强大,经常在 python 中用于转换、映射和过滤数组。

【讨论】:

    【解决方案2】:
    b=[['A', 'B', 'C'],
     ['A', 'B', 'D'],
     ['A', 'B', 'C', 'D'],
     ['A', 'C', 'D'],
     ['B', 'C', 'D']]
    c=[]
    for i in b:  
        if len(i)<=3:
            print(i)
            c.append(i)
    

    【讨论】:

      【解决方案3】:

      此脚本通过解析原始列表的每个索引并获取它的长度来创建一个新列表。如果长度为 3,则将其添加到新表中,如果长度不为 3,则将其忘记

      newlist = [] 
      for a in range (0, len(oldlist)):
          if len(oldlist[a]) == 3:
              newlist.append(oldlist[a]) 
      

      【讨论】:

      • 这里不需要range你可以直接for a in oldlist
      猜你喜欢
      • 2019-01-18
      • 2017-08-18
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2012-12-05
      • 2015-02-11
      相关资源
      最近更新 更多