栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

删除其中有两个连续元音的单词

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

删除其中有两个连续元音的单词

使用集:

使用set.intersection的第一种方法只能找到不相同的连续对,因此

oo
不会是匹配项:

s = " There was a boat in the rain near the shore, by some mysterious lake"vowels = "aeiouAEIOU"print([x for x in s.split() if any(len(set(x[i:i+2]).intersection(vowels))==  2 for i in range(len(x))) ])['boat', 'rain', 'near', 'mysterious']

方法2使用set.issubset,因此现在将相同的连续对视为匹配。

使用

set.issubset
与函数使用
yield from
蟒3语法,这可能是更合适的,并确实捕捉重复相同元音:

vowels = "aeiouAEIOU"def get(x, step):    yield from (x[i:i+step] for i in range(len(x[:-1])))print([x for x in s.split() if any(set(pr).issubset(vowels) for pr in get(x, 2))])

或再次在单个列表中:

print([x for x in s.split() if any(set(pr).issubset(vowels) for pr in (x[i:i+2] for i in range(len(x[:-1]))))])

最后,将元音设为一个集合,并检查它是否为任何字符对的set.issuperset:

vowels = {'a', 'u', 'U', 'o', 'e', 'i', 'A', 'I', 'E', 'O'}def get(x, step):    yield from (x[i:i+step] for i in range(len(x[:-1])))print([x for x in s.split() if any(vowels.issuperset(pr) for pr in get(x, 2))])


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号