Python 在两个数组中获取匹配元素的值

Python 在两个数组中获取匹配元素的值,python,arrays,Python,Arrays,如果a和b是对象列表,每个对象都有一个名称属性,例如a1=a1、b1=b1等,我将如何检查等效性?我目前正在这样做: aList = [ a1, a2, a3, a4, a5 ] bList = [ b1, b2 ] aNameList = [] bNameList = [] for i in aList: aNameList.append( i.name ) for i in bList: bNameList.append( i.name ) match = set(aNa

如果a和b是对象列表,每个对象都有一个名称属性,例如a1=a1、b1=b1等,我将如何检查等效性?我目前正在这样做:

aList = [ a1, a2, a3, a4, a5 ]
bList = [ b1, b2 ]
aNameList = []
bNameList = []

for i in aList:
    aNameList.append( i.name )
for i in bList:
    bNameList.append( i.name )

match = set(aNameList) & set(bNameList)

>>> set(['1', '2'])

但这似乎有点长,没有必要。有什么更好的方法可以做到这一点呢?

您可以使用列表理解来代替这些临时列表和示例中的循环:

match = set( [ x.name for x in aList ] ) & set ( [ x.name for x in bList ] )

您可以使用列表理解来替换这些临时列表和示例中的循环:

match = set( [ x.name for x in aList ] ) & set ( [ x.name for x in bList ] )
该函数用于提取感兴趣的字段:

set(map(attrgetter('name'), aList)) & set(map(attrgetter('name'), bList))
该函数用于提取感兴趣的字段:

set(map(attrgetter('name'), aList)) & set(map(attrgetter('name'), bList))

您可以用map替换临时列表和for循环来替换列表 比如:


您可以用map替换临时列表和for循环来替换列表 比如:


谢谢你的评论,你的权利。。。是时候让我为未来的读者上床了,我删除了我的评论集将接受一个生成器,所以方括号是不必要的。“Kall KuncChelt会一般的括号更好还是完全没有必要?我会认为它在风格上更好地摆脱它们。谢谢你的评论,你的权利……是时候让我为未来的读者上床了,我删除了我的评论集将接受一个生成器,所以方括号是不必要的。“KalnKunChelt会一般的括号更好还是完全没有必要?我想从风格上更好地摆脱它们。”