如何在Python中获取包含/match/exist数组之间的字符串?

2024-05-20 16:25:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取这两个数组之间匹配的任何字符串,但不幸的是没有成功

arr1 = ['crepas','aevig','rolex']
arr2 = ['fs', ':', 'rolex', 'datejust', '41', '126300', 'silver', 'dial', 'jubilee', '-', '2018', 'warranty', 'fs', ':', 'rolex', 'datejust', '41', '126300', 'silver', 'dial', 'jubilee', '-', '2018', 'warranty']

res = [arr1.index(i) for i in arr2] 
print(res)

我收到了这个错误信息

ValueError: 'fs' is not in list

应该是这样的

rolex

Tags: 字符串insilverres数组fswarrantyarr1
3条回答

您只需检查arr1中的元素是否也是in arr2,请尝试以下方法:

res = [x for x in arr1 if x in arr2]

在这里使用index()不是一个好主意,因为:

  1. 它返回元素的索引,而不是元素本身
  2. 如果元素不存在,它将抛出异常

还要注意,列表理解的过滤条件应该位于列表的最右边。如果您不关心保持元素的顺序,那么使用set可能会更有效,正如其他答案所指出的:

res = set(arr1).intersection(arr2)

如果您不想进行列表理解,可以使用sets进行如下操作:

arr1 = ['crepas','aevig','rolex']
arr2 = ['fs', ':', 'rolex', 'datejust', '41', '126300', 'silver', 'dial', 'jubilee', '-', '2018', 'warranty', 'fs', ':', 'rolex', 'datejust', '41', '126300', 'silver', 'dial', 'jubilee', '-', '2018', 'warranty']

res = set(arr1).intersection(set(arr2))
print(res)


>>> {'rolex'}

尝试:

arr3=list(set(arr1).intersection(set(arr2)))

print(arr3)

返回:

['rolex']

相关问题 更多 >