过滤字符串列表并返回一个仅包含您朋友姓名的列表

我正在学习 Python 并试图解决同样的问题(“朋友还是敌人?”)。我编写了下面的代码,并想了解如何按照“我的逻辑”方式继续前进。


看起来它只将第一个项目添加到列表中new_friends,但不会迭代列表的所有元素x。


除了上面之外,返回值是None......我在这里没有注意到什么?


def friend(x):

    x = ["Ryan", "Kieran", "Jason", "Yous"]

    new_friends = []

    for str in x:

        if len(str) == 4:

            return new_friends.append(str)

    return new_friends[0:]

除了if声明之外,我还尝试了嵌套while循环..但没有成功将其他项目添加到列表中new_friends。


慕森卡
浏览 71回答 1
1回答

倚天杖

这是您的函数的修复版本,我相信您想要的功能:def friend(x):    new_friends = []    for str in x:        if len(str) == 4:            new_friends.append(str) # no 'return' here    return new_friends # return resulting list.  no need to return a slice of it这是使用列表理解的更简洁的版本:def friend(candidates):    return [candidate for candidate in candidates if len(candidate) == 4]对于该函数的任一版本,如下:print(friend(["Ryan", "Kieran", "Jason", "Yous"]))结果是这样的:['Ryan', 'Yous']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python