Python 在两个数组中获取匹配元素的值
如果a和b是对象列表,每个对象都有一个名称属性,例如a1=a1、b1=b1等,我将如何检查等效性?我目前正在这样做: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
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会一般的括号更好还是完全没有必要?我想从风格上更好地摆脱它们。”