我希望首先从删除列表中循环单词“man”,然后是“eater”。将这些单词与项目列表中的字符串进行比较。如果匹配,则忽略它,如果不匹配,则附加到“a”
它应该忽略任何与“人”和“吃”匹配的词。不知何故,我的输出应该忽略包含单词“man”和“eater”的字符串列表,但不知何故它只是在delete中的第一个和第二个单词中保持循环。例如,当它为“man”循环单词时,它正确地删除了与这个单词匹配的字符串列表,但是当它为单词“eater”循环时,它又开始从项目列表中再次查找(第二次),然后重新发送一组新的字符串。这使得一切变得非常错误
我的代码:
item = []
delete=["man", "eater"]
item_list = ['sharper_task|$none_venue|man', 'sharper_task|man_venue|king', 'sharper_task|king_venue|world', 'sharper_task|world_venue|dont', 'sharper_task|を_venue|eater', 'sharper_task|eater_venue|todo', 'sharper_task|todo_venue|,']
a = [[] for i in range(len(item_list))]
if delete is not None:
for dele in delete:
for ii, f in enumerate(item_list):
if dele not in f:
a[ii].append(f)
else:
a = [[nn] for nn in item_list]
item.append(a)
print(item)
电流输出:
[[['sharper_task|$none_venue|man'], ['sharper_task|man_venue|king'], ['sharper_task|king_venue|world', 'sharper_task|king_venue|world'], ['sharper_task|world_venue|dont', 'sharper_task|world_venue|dont'], ['sharper_task|を_venue|eater'], ['sharper_task|eater_venue|todo'], ['sharper_task|todo_venue|,', 'sharper_task|todo_venue|,']]]
预期产量:
['sharper_task|king_venue|world', 'sharper_task|world_venue|dont', 'sharper_task|todo_venue|,']
我认为这可能是困难的,但如果可能的话,我希望坚持一个较短的代码,而不是包括太多的for循环在这里。我还在学习,我发现我在迭代列表时使用了太多for循环
您可以遍历
item_list
并获取不包含delete
列表中任何元素的元素:我不知道你为什么需要一个重复的输出,但是你可以这样做:
这给了你一个期望的
any(...)
返回一个True
如果我们在其中检查的任何一个条件变为真,否则返回一个False
。这里,当delete
中的任何元素位于item_list
时,我们需要返回一个True
非列表理解版本:
确实不确定,但是如果只想检查在
'|'
的一个分裂中是否有连续的东西(所以man|blah|foo
是,并且man_blah|foo|bar
否):对于您的确切输出:
相关问题 更多 >
编程相关推荐