我正在学习 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。
1 回答
倚天杖
TA贡献1828条经验 获得超3个赞
这是您的函数的修复版本,我相信您想要的功能:
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']
添加回答
举报
0/150
提交
取消