【发布时间】:2019-02-17 04:06:24
【问题描述】:
我有两个列表,list1 和 list2。对于list1 中的每个值,我需要在list2 中找到满足以下两个条件的元素:
list1元素必须是任何list2元素的子字符串(例如,list1中的 'ABC' 是list2中的 'ABCDE' 的子字符串)list1元素的长度必须小于list2元素的长度('ABC' 比 'ABCDE' 短)。
然后我想将list2 中的任何合格元素传递给单独的list3。我在绕过语法来实现这一点时遇到了很多麻烦。
这是我迄今为止尝试过的:
for elem in list1:
if elem in list2 and len(elem) < len(range(list2)):
list3.append(list2)
我意识到“len(range(list2))”是错误的,但它已经尽可能接近我认为正确的了。我不清楚如何“提取”符合条件的特定元素并将它们添加到我的列表中。
任何帮助将不胜感激:)
【问题讨论】:
-
如果要求 list2 元素必须是子字符串,为什么还要比较长度?它需要更短才能成为子字符串
-
请显示输入和预期输出。一个例子胜过一千个字……我的水晶球告诉我你需要
all(len(elem) < len(x) for x in list2)。或any...哦,好吧...不清楚 -
@Cut7er 子字符串不必比父字符串短:它可能相等。即
'ABC'是'ABC'的子字符串,但它不是 OP 的有效答案