我有一個(gè)嵌套列表,我想刪除空列表[]和其中值為 的任何嵌套列表-1。這是我到目前為止所擁有的,它工作得更早,但我認(rèn)為 jupyter 有問(wèn)題。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)我認(rèn)為問(wèn)題是當(dāng)我從區(qū)域列表中刪除一個(gè)區(qū)域時(shí),區(qū)域嵌套列表的計(jì)數(shù)器被修改,這使我在完成遍歷每個(gè)嵌套列表之前用完了索引值。我的方法是否也有意義,或者是否有我忽略的更原生的解決方案(例如某種列表理解、lambda、過(guò)濾器等)?
2 回答

四季花海
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以簡(jiǎn)單地使用此列表推導(dǎo):
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]]

侃侃無(wú)極
TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
您還可以使用:
regions = list(filter(lambda r: r and (r.count(-1)==0),regions))
添加回答
舉報(bào)
0/150
提交
取消