Python 如何检查数组中是否存在类的属性?
我想知道是否可以检查一个类的数组是否有属性的特定实例,如果有,则返回True。换句话说,类属性的实例是否存在于该类的数组中 在我的示例中,我有一个classPython 如何检查数组中是否存在类的属性?,python,arrays,Python,Arrays,我想知道是否可以检查一个类的数组是否有属性的特定实例,如果有,则返回True。换句话说,类属性的实例是否存在于该类的数组中 在我的示例中,我有一个classTeam数组。类Team有一个属性name。我想通过迭代团队实例数组来检查是否存在具有特定名称的团队实例 班级团队: class Team: def __init__(self): self.name = name # (String) [无效]这是我想要编写函数的方式: # team_name is a Stri
Team
数组。类Team
有一个属性name
。我想通过迭代团队
实例数组来检查是否存在具有特定名称
的团队
实例
班级团队:
class Team:
def __init__(self):
self.name = name # (String)
[无效]这是我想要编写函数的方式:
# team_name is a String variable
# teams is an array of the Team class
def team_name_taken(team_name, teams):
if team_name in teams.name:
return True
else:
return False
我知道这不起作用,但是否可以以这种方式在数组中迭代相同的属性
[有效]关于我的代码目标,我有以下代码可以正常工作:
def team_name_taken(team_name, teams):
for team in teams:
if team_name == team.name:
return True
return False
我知道这是可行的,我只是想知道是否有其他方法可以做到这一点,类似于我上面提到的无效方法。您可以做以下几点:
def team_name_taken(team_name, teams):
team_names = [team.name for team in teams]
if team_name in team_names:
return True
else:
return False
any(map(lambda obj: obj.name == '3', teams))
这将生成一个列表,列表中的项目都是团队名称。完成后,您可以在team\u names:中执行if team\u name并获得所需的结果
另一方面,如果您只是想让它成为一个单行线,您可以这样做:
def team_name_taken(team_name, teams):
return len([ team for team in teams if team.name == team_name ]) >= 1
这将创建一个列表
,然后检查列表的len()
是否为1(或更大)如果是这种情况,则返回True
elseFalse
以下类定义允许将用户的name
分配给团队。name
属性并强制它成为str
对象:
class Team(object):
def __init__(self, name):
self.name = str(name)
以下是团队
实例的示例列表:
teams = [Team(x) for x in range(10)]
你可以用一句话做我认为你想做的事:
使用另一个列表理解来确定名称
中的任何一个是否等于'3'
:
any([team.name == '3' for team in teams])
或者,如果您确实想使用某个函数,您可以使用以下命令:
def team_name_taken(team_name, teams):
team_names = [team.name for team in teams]
if team_name in team_names:
return True
else:
return False
any(map(lambda obj: obj.name == '3', teams))
您不能使用团队。名称作为团队
不属于团队
类别。所以,我想说你所做的是正确的/更充分的。是的,我理解这一点,我也理解为什么它不起作用,这更像是我所好奇的一般方法。