为了账号安全,请及时绑定邮箱和手机立即绑定

如果嵌套列表包含某个值,则从列表中删除嵌套列表

如果嵌套列表包含某个值,则从列表中删除嵌套列表

手掌心 2022-10-25 15:59:11
我有一个嵌套列表,我想删除空列表[]和其中值为 的任何嵌套列表-1。这是我到目前为止所拥有的,它工作得更早,但我认为 jupyter 有问题。regions = [[], [2, -1, 1], [4, -1, 1, 3], [5, 0, -1, 4], [9, 10, 7, 8],                     [7, 6, 10], [8, 0, 5, 6, 7], [9, 2, 1, 3, 10],                     [9, 2, -1, 0, 8], [10, 3, 4, 5, 6]]counter = range(len(regions))for region in counter:    print(region)    for i in range(len(regions[region])): # IndexError: list index out of range    #print(regions[region])        if regions[region][i] == -1:            regions.remove(regions[region])            breakprint(regions)我认为问题是当我从区域列表中删除一个区域时,区域嵌套列表的计数器被修改,这使我在完成遍历每个嵌套列表之前用完了索引值。我的方法是否也有意义,或者是否有我忽略的更原生的解决方案(例如某种列表理解、lambda、过滤器等)?
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

您可以简单地使用此列表推导:

regions = [i for i in regions if i and (-1 not in i)]

输出 :

[[9, 10, 7, 8], [7, 6, 10], [8, 0, 5, 6, 7], [9, 2, 1, 3, 10], [10, 3, 4, 5, 6]]


查看完整回答
反对 回复 2022-10-25
?
侃侃无极

TA贡献2051条经验 获得超10个赞

您还可以使用:

regions = list(filter(lambda r: r and (r.count(-1)==0),regions))


查看完整回答
反对 回复 2022-10-25
  • 2 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信