亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果嵌套列表包含某個值,則從列表中刪除嵌套列表

如果嵌套列表包含某個值,則從列表中刪除嵌套列表

手掌心 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 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號