我对Python和一般编程都很陌生,我想知道编写带有许多逻辑运算符的长语句是否是一个好的编程实践-例如,在for循环中。
例如,下面是我创建的一个函数,它从一个单词中获取所有元音,并返回一个包含这些元音的列表。
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语句变得非常长。它被认为是好的编程吗?如果不是,有没有更好的方法来编写这个函数呢?
发布于 2012-04-07 21:54:54
不,这不被认为是好的做法,总是有更好的方法:D
if i.upper() in "AEIOU"
下面是使用列表理解的函数的简短版本:
def get_vowels(word):
vowels = "AEIOU"
return [c for c in word if c.upper() in vowels]
发布于 2012-04-07 21:55:02
if
与以下内容相同:
if i in "aeiouAEIOU"
基本上,您是在检查集合中的成员。
发布于 2012-04-07 21:56:59
我认为长语句比短语句更难理解。几乎总是有一种方法可以用更短的语句来做同样的事情。在您的例子中,您可以像这样简化if:
def getVowels(word):
vowel_list = []
for i in word:
if i in "aeiouAEIOU":
vowel_list.append(i)
return vowel_list
因为Python允许您使用"in“运算符来搜索一个字符串中的另一个字符串。
但是Python也允许列表理解,这简化了循环:
def getVowels(word):
return [i for i in word if i in "aeiouAEIOU"]
https://stackoverflow.com/questions/10055045
复制相似问题