仅当名称长于其前一个时才打印。
|
假设您有一个名称列表[\“ sam \”,\“ janet \”,\“ bob \”,\“ samantha \”]。
您将如何用Python编写程序,使其仅在名称长于其名称时才打印名称。
没有找到相关结果
已邀请:
5 个回复
娜拐赐巫潭
中的
配方与列表理解一起使用,这让我印象深刻:
更新资料 从您的问题尚不清楚,ѭ3中的名字是否应该比前面的名字更长或更短。上述解决方案将其排除在外。如果您(或您的老师?)想要包括第一项:
诉嘎归亮
青董据零
,它在列表中的每个项目上调用给定函数,并且仅输出该函数返回outputs7的那些函数。所以我们想做这样的事情:
因此,我们尚未定义的函数
将首先使用\“ sam \”作为参数,然后调用\“ janet \”,\“ bob \”,依此类推。现在的问题是函数通常没有内存,因此我们需要一些技巧来使函数记住最后一个参数的长度并将其与当前参数的长度进行比较。 做到这一点的天真的方法是在全球范围内争论。假设以下代码粘贴在上面给出的代码之前:
现在,使用全局变量存储实际上只需要在一个地方使用的值被认为是不好的做法。有没有其他方法可以给我们的功能记忆?好吧,在python中,一切都是对象,因此我们可以给函数本身一个属性(警告,前面的丑陋代码):
好吧,这并不能完全提高可读性,我们必须使用
,我发现这很好地表明了我的设计不好。另外,此功能仅可使用一次,之后我们必须用
手动将其复位。因此,我们希望能够像这样创建一些一次性函数,每个函数都有一个用于存储最后长度的属性。嗯,这对于一个类来说听起来不错。毕竟,类是在被调用时产生具有属性的对象的东西。但是对象需要像函数一样起作用。我们可以使用
特殊方法来实现,如下所示:
现在,我们只需要更改顶部的代码,即可使用
类的对象而不是功能long_than_previous:
现在,这已经好得多了,而且可读性强。我在sam后面加了一个问号,因为这个问题尚待解决。更改类很容易,因此不包括在内:
注意:答案已被完全重写。
孝铜差
想法是将先前打印的长度存储在变量中。
死簇
或者(以更Python化的方式):
当然,名字永远不会被打印出来。