我试图从包含子列表的列表中删除某个字符串的所有实例。例如,如下所示:
myarray = ['a', 'a', ['b', 'a', 'a'], ['a', 'c', 'd', 'a'], 'a', ['a', 'd']]
就这样结束了
^{pr2}$删除'a'
的所有实例后。在
我使用了以下代码:
def delnodata(lst, what):
for index, item in enumerate(lst):
if type(item) == list:
delnodata(item, what)
else:
if item == what:
lst.remove(item)
delnodata(mylist, 'a')
但结果是:
[['b', 'a'], ['c', 'd'], 'a', ['a', 'd']]
我在这个网站上看到过很多类似的问题,但不幸的是,我的编程技能还不足以让我自己把这些问题组合起来!在
我会递归地这么做。这也适用于任意嵌套级别。在
该函数返回一个新列表,因此我们不必在迭代原始列表时从原始列表中删除项,正如其他人已经指出的那样,这可能是危险的(请参见this问题,尤其是注释)。相反,您可以重新分配
myarray
。在输出:
^{pr2}$首先用于}的整个副本
for index, item in enumerate(lst[:])
,所以它循环遍历lst
第二个delnodata(myarray, 'a')
而不是{下面的代码返回一个新列表,删除了
'a'
s。它不会在适当的地方修改列表,这会导致一些神秘的问题。在来源
输出
^{pr2}$相关问题 更多 >
编程相关推荐