这里我有两个列表:
list1 = ['2C535EB58F19B58' , '7B89D9071EB531B143594FF909BAC846' , '0509']
list2 = ['1641AB0C9C5B8867' , '0098968C' , '509']
我需要将list2内的元素与list1元素进行比较。
在比较之后,我希望输出为:
509
因为0509中存在509。
我该如何实现?正则表达式可以帮助我吗?
答案 0 :(得分:2)
尝试一下: 在这里,我们正在检查list2中的元素是否是list1中元素的子字符串。
list1 = ['2C535EB58F19B58' , '7B89D9071EB531B143594FF909BAC846' , '0509']
list2 = ['1641AB0C9C5B8867' , '0098968C' , '509']
for i, j in zip(list1, list2):
if j in i:
print(j)
将添加到列表中的一个班轮:
print( [j for i, j in zip(list1, list2) if j in i])
可能会有更简单更好的答案。如果有帮助,您可以选择它。
答案 1 :(得分:0)
您可以执行以下操作:
common_elements = []
for x in list1:
for y in list2:
if y in x:
common_elements.append(y)
common_elements
将包含您需要的元素。
答案 2 :(得分:0)
正如BearBrown在评论中所建议的那样,有一种简单的方法可以实现您的目标。完全没有理由考虑正则表达式(in
运算符足够强大)。
[x for x in list2 if any(y for y in list1 if x in y)]
如果您要查找列表2中的每个字符串x
的子字符串,请在列表2中查找每个字符串y
,最后将每个匹配的子字符串x
保存在新列表中。
答案 3 :(得分:0)
for x in list2:
for y in list1:
if x in y:
print x #or whatever
嵌套for循环,我认为这是一种简单的方法,但是我敢肯定有更好的方法
答案 4 :(得分:-1)
您可以简单地在python中使用in
操作来检查一个字符串是否在另一字符串中。
解决问题的最简单方法是
[y for y in list2 if any(y in x for x in list1)]