2024-10-01 01:45:39 发布
网友
我想从嵌套列表中删除所有零元素。但它们并没有被移除
FuzzyYesNo_nest=[ ['y', 'y', 'y', 'n', 'n', 'n', 'y', 0, 0, 0, 0, 0], ['n', 'n', 'n', 'n', 'y', 'n', 'n']] for i in FuzzyYesNo_nest: try: i.remove(0) except: pass
你能看出来是什么问题吗
如果知道嵌套只有一层深,可以使用以下列表:
[[y for y in x if y != 0] for x in FuzzyYesNo_nest]
例如:
FuzzyYesNo_nest=[ ['y', 'y', 'y', 'n', 'n', 'n', 'y', 0, 0, 0, 0, 0], ['n', 'n', 'n', 'n', 'y', 'n', 'n'] ] print([[y for y in x if y != 0] for x in FuzzyYesNo_nest])
输出:
[['y', 'y', 'y', 'n', 'n', 'n', 'y'], ['n', 'n', 'n', 'n', 'y', 'n', 'n']]
这是因为i.remove只从列表中删除第一个元素
i.remove
如果您仔细观察您的输出,您将看到零中的一个被删除
这是你的固定密码
FuzzyYesNo_nest=[ ['y', 'y', 'y', 'n', 'n', 'n', 'y', 0, 0, 0, 0, 0], ['n', 'n', 'n', 'n', 'y', 'n', 'n']] for i in FuzzyYesNo_nest: try: while True: i.remove(0) except: pass
或者您可以使用@LaytonGB建议的嵌套列表理解
请记住,上述代码将就地编辑列表,列表理解将创建数据结构的新副本
使用可以使用对每个子列表的理解来筛选0:
m = list(map(lambda l: [v for v in l if v != 0], FuzzyYesNo_nest))
>>> m [['y', 'y', 'y', 'n', 'n', 'n', 'y'], ['n', 'n', 'n', 'n', 'y', 'n', 'n']]
如果知道嵌套只有一层深,可以使用以下列表:
例如:
输出:
这是因为
i.remove
只从列表中删除第一个元素如果您仔细观察您的输出,您将看到零中的一个被删除
这是你的固定密码
或者您可以使用@LaytonGB建议的嵌套列表理解
请记住,上述代码将就地编辑列表,列表理解将创建数据结构的新副本
使用可以使用对每个子列表的理解来筛选0:
相关问题 更多 >
编程相关推荐