开发者社区> 问答> 正文

有什么方法可以使用if语句方法简化此列表的理解?

我正在尝试取一个字符串,并从超过4个字符的单词中删除元音。

有没有更有效的方式来编写此代码?

(1)从字符串中创建一个数组。

(2)遍历数组,并从具有4个以上字符的字符串中删除元音。

(3)将数组中的字符串连接到新字符串。 def abbreviate_sentence(sent):

split_string = sent.split()
for words in split_string:
    abbrev = [words.replace("a", "").replace("e", "").replace("i", "").replace("o", "").replace("u", "")
                    if len(words) > 4 else words for words in split_string]
    sentence = " ".join(abbrev)
    return sentence

print(abbreviate_sentence("follow the yellow brick road")) # => "fllw the yllw brck road"

展开
收起
游客6qcs5bpxssri2 2019-09-22 15:36:17 1473 0
1 条回答
写回答
取消 提交回答
  • 可以避免外部for,因为已经在内部迭代了。另一方面,您可以使用另一个嵌套在现有理解中的列表理解替换多个替换。

    abbrev = [''.join([x for x in words if x.lower() not in vowels])

    if len(words) > 4 else words for words in split_string]

    sentence = " ".join(abbrev)

    return sentence

    或将字符串部分的形成抽象到一个新函数中,可能会增加其可读性: def form_word(words):

    vowels = 'aeiou'
    return ''.join([x for x in words if x.lower() not in vowels])
    

    def abbreviate_sentence(sent):

    split_string = sent.split()
    
    abbrev = [form_word(words) if len(words) > 4 else words for words in split_string]
    
    sentence = " ".join(abbrev)
    
    return sentence
    
    2019-09-22 15:39:22
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
建立联系方法之一 立即下载
JS 语言在引擎级别的执行过程 立即下载