【问题标题】:List comprehensions列表推导
【发布时间】:2017-10-09 09:03:11
【问题描述】:

我已经收到了这个问题并且一直坚持下去。

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

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

到目前为止我得到的是

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

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

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 请参阅Asking about homework。如果您希望我们帮助您,至少必须自己尝试并向我们展示您的尝试。
  • 您应该展示您已经尝试过的内容以及您的想法,而不是仅仅要求我们为您解决问题。 (顺便说一下,这就是你被否决的原因)

标签: python list list-comprehension


【解决方案1】:

all() 如果列表中的所有项目都为真,则返回真

>>> print(all([True, True, True, True]))
True
>>> print(all([False, True, True, False]))
False

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

>>> 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()的信息

【讨论】:

    【解决方案2】:

    对于这项运动:

    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] 
    

    【讨论】:

    • 我发现-len(x) 比简单地颠倒列表和你的 if 错误更令人困惑。只需使用all()。删除[0],你会看到它。
    • 我宁愿选择最后一个元素也不愿恢复整个列表。你是对的,我犯了一个错误,更正
    • 恐怕你没有完全理解我。如果您使用len(x) 而不是-len(x),您仍然可以做同样多的工作。然后你会得到[-1],而不是[0]
    • 是的,这正是我所说的。你说的是“倒置列表”
    猜你喜欢
    • 2016-02-13
    • 2011-07-23
    • 2010-11-07
    • 2013-11-02
    • 2012-08-09
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多