You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效筛选出受邀参加派对的团队成员?

如何高效筛选出受邀参加派对的团队成员?

嗨,这个问题问得太实用了!当团队列表有300人、受邀列表多达4000人时,原来的双重循环确实会有点吃力——毕竟O(n*m)的时间复杂度,数据量上去后计算量会直线飙升。咱们来聊聊几个更高效的解决方案:

方法一:用集合优化查找逻辑

虽然本质上还是要检查每个受邀者是否包含团队成员,但把团队列表转成集合后,查找的底层效率会更高(集合的成员检查是O(1)的常数时间)。而且如果团队里有重复名字,集合还能自动去重,避免重复检查。

代码示例:

my_team_list = ['Andy', 'Bernice', 'Charlotte', 'David', 'Evan']
invitee_list = ['Mandy (Team A)', 'Navin - Team A', 'Olive Team B', 'Peter Team C', 'Queenie (D)', 'Royston -D team', 'Steven (E team)', 'Tammy (E team)', 'Bernice (Z team)', 'Victor (A Team)', 'Wendy (Team B)', 'David (Team Z)']

# 把团队成员转成集合,提升查找效率
team_set = set(my_team_list)

# 遍历受邀列表,逐个检查
for invitee in invitee_list:
    for member in team_set:
        if member in invitee:
            print(invitee)
            break  # 找到匹配就跳出,避免不必要的检查

这个方法的时间复杂度还是O(m*n),但实际运行速度会比原方法快,因为集合的遍历和查找效率比列表更高,而且去重后减少了循环次数。

方法二:用正则表达式批量匹配

更高效的思路是把所有团队成员拼成一个正则匹配模式,让正则引擎一次性完成“是否包含任意团队成员”的检查——正则引擎内部做了大量优化,比手动循环检查要快得多,尤其当团队成员数量较多时优势更明显。

代码示例:

import re

my_team_list = ['Andy', 'Bernice', 'Charlotte', 'David', 'Evan']
invitee_list = ['Mandy (Team A)', 'Navin - Team A', 'Olive Team B', 'Peter Team C', 'Queenie (D)', 'Royston -D team', 'Steven (E team)', 'Tammy (E team)', 'Bernice (Z team)', 'Victor (A Team)', 'Wendy (Team B)', 'David (Team Z)']

# 把团队成员拼成正则备选模式,自动转义特殊字符(避免名字里有正则符号出问题)
team_pattern = re.compile('|'.join(re.escape(member) for member in my_team_list))

for invitee in invitee_list:
    if team_pattern.search(invitee):
        print(invitee)

额外优化:避免子串误匹配

如果担心出现类似“Mandy”被当成包含“Andy”的误匹配情况,可以给正则加上单词边界,确保只匹配完整的名字:

team_pattern = re.compile(r'\b(' + '|'.join(re.escape(member) for member in my_team_list) + r')\b')

这个方法的时间复杂度接近O(m)(正则匹配的时间主要取决于受邀者字符串的长度,整体比双重循环高效很多),代码也更简洁。

总结

针对你的数据规模(300 vs 4000),上面两种方法都能显著提升效率。如果追求代码简洁和最高性能,正则表达式的方案会是更好的选择;如果不想引入正则库,用集合优化的方法也能达到不错的效果。

备注:内容来源于stack exchange,提问作者ih-isj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:09:40