列表理解

时间:2017-05-10 15:40:11

标签: python list list-comprehension

我被问到了这个问题并坚持下去。

W = ['cat', 'audiotape', 'businesswoman', 'dog']

编写列表推导以有效地从随机的单词列表中提取w, 最长的单词lw,包含每个元音的至少一个实例。 如果需要,在答案中包含帮助函数。 (对于上面给出的w,lw是“女商人”。)

到目前为止我得到的是

lw = max [len(w)for n in w]

我知道这不是很多我不明白如何找到包含所有元音的单词以及如何打印最长的单词。我是Python的新手。

2 个答案:

答案 0 :(得分:1)

all()如果列表中的所有项都为True

,则返回true
>>> print(all([True, True, True, True]))
True
>>> print(all([False, True, True, False]))
False

在上述问题中,我们需要使用all vowels检查string (ex: businesswoman)中是否存在all,如下所示:

>>> all(t in "businesswoman" for t in 'aeiouu')
True

同样,我们需要对W中的所有项目执行此操作,如下所示:

>>> W = ['cat', 'audiotape', 'businesswoman', 'dog'] 
>>> [x for x in W if all(t in x for t in 'aeiouu')]
['audiotape', 'businesswoman']
>>> sorted([x for x in W if all(t in x for t in 'aeiouu')], key=len)[-1]
'businesswoman'

详细了解all()

答案 1 :(得分:0)

对于这项运动:

W = ['cat', 'audiotape', 'businesswoman', 'dog']
lw = sorted([x for x in  W  if all(y in x for y in 'aeiou')], key=lambda x:len(x))[-1]