使用列表理解和集合
作者:互联网
创建并打印同时满足以下两个条件的单词列表:
>单词长度至少为8个字符;
>由奇数字母组成的单词在小写单词集中;和
>由偶数字母组成的单词在小写单词集中.
例如,单词“ ballooned”应包括在您的列表中,因为由奇数字母“ blond”形成的单词和由偶数字母“ aloe”形成的单词都在小写单词.同样,“每三年一次”分为“ tinily”和“ renal”,这两个词都在单词列表中.
我的老师告诉我们,我们应该使用一个集合:s = set(lowers),因为这样会更快.
我到目前为止所拥有的:
s=set(lowers)
[word for word in lowers if len(word)>=8
and list(word)(::2) in s
and list(word)(::-2) in s]
我认为我没有使用权利.有人可以帮我这个忙吗
解决方法:
问题是您将单词强制转换为列表(不必要),切片不在括号中(使用括号),第二个切片使用了错误的索引(应为1 :: 2,而不是::-2).
这是正确完成的切片:
>>> word = "ballooned"
>>> word[::2]
'blond'
>>> word[1::2]
'aloe'
请注意,s是小写单词集合的奇数名称.一个更好的名字是单词.
您对set的使用是正确的.老师希望您使用集合的原因是,测试集合成员资格的速度比列表的速度要快得多.
把它放在一起:
words = set(lowers)
[word for word in words if len(word) >= 8
and word[::2] in words
and word[1::2] in words]
标签:set,python,list-comprehension 来源: https://codeday.me/bug/20191031/1977393.html