在python中使用if语句列表?

mar*_*arc 1 python if-statement list

我有一个如下的单词列表:

old_list = ['houses','babies','cars','apples']
Run Code Online (Sandbox Code Playgroud)

我需要的输出是:

new_list = ['house','baby','car','apple']
Run Code Online (Sandbox Code Playgroud)

为了做到这一点,我提出了一个循环:

new_list1 = []
new_list2 = []
for word in old_list:
    if word.endswith("ies"):
        new_list1[:0] = [word.replace("ies","y")] 
    elif word.endswith("s"):
        new_list2[:0] = [word.replace(' ','')[:-1]]

new_list = new_list1 + new_list2 # Order doesn't matter, but len(new_list) == len(old_list)
Run Code Online (Sandbox Code Playgroud)

它根本不起作用.我得到的东西是这样的:

new_list = ['baby','house','babie','car','apple']
Run Code Online (Sandbox Code Playgroud)

我确定我只是犯了一个简单的错误,但我看不到它.如果有一种简单的方法可以实现它,我会使用list.append().

谢谢!

Fre*_*abe 5

这并没有直接解决你的问题(为什么你的尝试代码没有按预期工作)但我建议不要首先使用循环 - 相反,有一个专用函数来给出给定英语单词的单数形式,喜欢:

def singular(word):
  # ...
  return singularForm
Run Code Online (Sandbox Code Playgroud)

然后使用列表理解

new_list = [singular(word) for word in old_list]
Run Code Online (Sandbox Code Playgroud)

它更短,恕我直言很好地传达你所做的事情:获得每个单词的单数形式,old_list而不是谈论它是如何完成的(通过循环遍历列表).


Yul*_*a V 5

首先,word.replace("ies","y")这不是一个好主意; 有时你可以在单词的中间找到它,例如diesel

new_list = []
for word in old_list:
    if word.endswith("s"):
        if word.endswith("ies"):
            new_list.append(word[:-3] + "y")
        else:
            new_list.append(word[:-1])
Run Code Online (Sandbox Code Playgroud)