How can I say check in one line “if a_list is empty or a_list[0].property == something” in one line?
考虑
1 | teams = [[], []] |
我想在团队中添加一个人,但前提是(1)他们与团队中的其他人属于同一个公司,或者(b)团队当前为空。直接前进的道路是:
1 2 3 4 5 6 7 8 9 10 11 12 13 | for team in teams: if len(team) > 0: # could also use"if bool(team):" if team[0].company == new_person.company: team.append(new_person) break else: continue else: team.append(new_person) break else: teams.append([]) teams[-1].append(new_person) |
对我来说,这似乎是一个简单的决定。复杂的因素是一个空列表的可能性,如果我试图查看其中一个元素的属性,它会给我一个错误。
我怎么能说一行中的
你是说这个?:
1 2 3 | ... if not a_list or a_list[0].property == something: ... |
我找到了另一种方法,通过使用我在这里找到的,我进一步得到了:
1 | if next(iter(team, new_person)).company == new_person.company: |
但我认为U9前锋的反应确实是最好的方式。同时,很高兴记住布鲁诺·德施韦利尔斯的话:
您可以尝试以下操作:
1 2 3 4 5 | # hasatrr -> some safety check if not a_list or (hasatrr(a_list[0], 'property') and a_list[0].property == something)): <perform your operation> else: <perform your else operation> |