首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python枚举列表的良好编程实践

Python枚举列表的良好编程实践
EN

Stack Overflow用户
提问于 2012-04-07 21:51:57
回答 4查看 1.5K关注 0票数 17

我对Python和一般编程都很陌生,我想知道编写带有许多逻辑运算符的长语句是否是一个好的编程实践-例如,在for循环中。

例如,下面是我创建的一个函数,它从一个单词中获取所有元音,并返回一个包含这些元音的列表。

代码语言:javascript
复制
def getVowels(word):
    vowel_list = []
    index = 0
    for i in word:
        if i == "a" or i == "e" or i == "i" or i == "o" or i == "u" or i == "A" or i == "E" or i == "I" or i == "O" or i == "U":
            vowel_list.append(word[index])
        index += 1
    return vowel_list

如您所见,if语句变得非常长。它被认为是好的编程吗?如果不是,有没有更好的方法来编写这个函数呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-07 21:54:54

不,这不被认为是好的做法,总是有更好的方法:D

代码语言:javascript
复制
if i.upper() in "AEIOU"

下面是使用列表理解的函数的简短版本:

代码语言:javascript
复制
def get_vowels(word):
    vowels = "AEIOU"
    return [c for c in word if c.upper() in vowels]
票数 34
EN

Stack Overflow用户

发布于 2012-04-07 21:55:02

if与以下内容相同:

代码语言:javascript
复制
if i in "aeiouAEIOU"

基本上,您是在检查集合中的成员。

票数 1
EN

Stack Overflow用户

发布于 2012-04-07 21:56:59

我认为长语句比短语句更难理解。几乎总是有一种方法可以用更短的语句来做同样的事情。在您的例子中,您可以像这样简化if:

代码语言:javascript
复制
def getVowels(word):
    vowel_list = []
    for i in word:
        if i in "aeiouAEIOU":
            vowel_list.append(i)
    return vowel_list

因为Python允许您使用"in“运算符来搜索一个字符串中的另一个字符串。

但是Python也允许列表理解,这简化了循环:

代码语言:javascript
复制
def getVowels(word):
    return [i for i in word if i in "aeiouAEIOU"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10055045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档