如何从列表的列表或元组的列表中删除具有某些单词的列表?


  1. List of Lists[[b], [' d '], [' e '], [' b ', ' d ', ' e '], [' b ', ' e '], [' e ', ' f '], [' b ', ' d ']]

  2. 元组列表[(b)、("d")("e"),(' b ', ' d ', ' e '),("b","e"),(e, f), (' b ', ' d ')]

我想删除任何包含字符'b'和'd'的列表或元组。因此输出应该如下所示:

remove lists = [['b','d']]Remove tuples = [('b','d')]

修改列表的列表[[b], [' d '], [' e '], [' b ', ' e '],[‘e’,‘f’]]

已修改的元组列表[(b)、("d")("e")("b","e"),(e, f)]

我希望对多个列表/元组的组合执行此操作,例如remove lists = [[e,f],[b,d]]来删除任何包含字符e和f以及b和d的列表。

我非常感谢你能提供的任何帮助。

一个简单的列表理解就足够了。可用于列表的列表和元组的列表。

abc = [['b'],['d'],['e'], ['b','d','e'],['b','e'],['e','f'],['b','d']]
# Characters to remove
rm = [['e','f'],['b','d']]
# Function takes two list of lists as input
def refine_list(mylist, stuff_to_remove):
for to_remove in stuff_to_remove:
mylist = [x for x in mylist if not set(to_remove).issubset(set(x))]
return mylist
print(refine_list(abc, rm))

输出:

[['b'], ['d'], ['e'], ['b', 'e']]

我为您制作了一个易于阅读和理解的代码片段,该代码片段使用辅助函数从列表列表或元组列表中删除字符串/字符/字母列表

如果你有任何问题,请评论,如果你不知道枚举方法是做什么的,上网查一下。如果你设法理解了解决方案,请告诉我

def remove_chars(lists, list_of_chars):
result = []
for idx, list in enumerate(lists):
if all(letter in list for letter in list_of_chars):
pass
else:
result.append(list)
return result

list_of_lists = [['b'],['d'],['e'], ['b','d','e'],['b','e'],['e','f'],['b','d']]
list_of_tuples = [('b',), ('d',), ('e'), ('b', 'd', 'e'), ('b', 'e'), ('e', 'f'), ('b', 'd')]
letters_to_remove = ['b']
filtered_lists = remove_chars(list_of_lists, letters_to_remove)
print(filtered_lists)
filtered_tuples = remove_chars(list_of_tuples, letters_to_remove)
print(filtered_tuples)

# remove list of list of chars:
list_of_list_of_letters = [['b'],['b','d']]
for list_of_letters in list_of_list_of_letters:
filtered_lists = remove_chars(list_of_lists, list_of_letters)
print(filtered_lists)
filtered_tuples = remove_chars(list_of_tuples, list_of_letters)
print(filtered_tuples)

最新更新