如何统计列表中非数字、非字母数字类的唯一字符串数量?
解决方法拆解
没问题,我来帮你搞定这个需求!咱们一步步来实现:
步骤1:过滤出符合要求的字符串
首先得把那些不含数字的字符串挑出来——毕竟你要排除纯数字、字母数字混合的。我们可以检查每个字符串里有没有数字,只要没有数字的就保留:
lst = ['new car', '232', 'famous bike','232', 'new car', '232plane', 'new car', 'plane232'] # 过滤掉包含数字的字符串 filtered_strings = [s for s in lst if not any(char.isdigit() for char in s)] # 此时filtered_strings的结果是:['new car', 'famous bike', 'new car', 'new car']
步骤2:提取每个有效字符串的最后一个单词
接下来从这些保留的字符串里提取你关心的核心词汇(比如'new car'里的'car','famous bike'里的'bike'),用split()分割字符串后取最后一个元素就行:
# 提取每个字符串的最后一个单词 target_words = [s.split()[-1] for s in filtered_strings] # 此时target_words的结果是:['car', 'bike', 'car', 'car']
步骤3:统计唯一词汇的数量
最后把这些单词转成集合(集合会自动去重),再取集合的长度就是你要的结果了:
unique_count = len(set(target_words)) print(unique_count) # 输出:2
整合版代码
如果你想更简洁,也可以把这些步骤合并成一行:
lst = ['new car', '232', 'famous bike','232', 'new car', '232plane', 'new car', 'plane232'] unique_count = len(set(s.split()[-1] for s in lst if not any(char.isdigit() for char in s))) print(unique_count) # 同样输出2
这样就完美实现了你的需求,得到唯一词汇的数量是2~
内容的提问来源于stack exchange,提问作者YOLO
相关产品推荐
相关产品推荐

