其他分享
首页 > 其他分享> > 使用列表理解和集合

使用列表理解和集合

作者:互联网

创建并打印同时满足以下两个条件的单词列表:

>单词长度至少为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