python中的循环函数_在Python中动态循环遍历函数中的函数列表

我想看看是否可以遍历函数中的函数列表。我能找到的最接近的东西是在整个模块中循环。我只想使用预先选择的函数列表。

这是我最初的问题:给定一个字符串,检查每一个字母,看看是否有5个测试满足。

如果至少有一个字母通过检查,则返回True。

如果字符串中的所有字母都未通过检查,则返回False。

对于字符串中的每个字母,我们将检查以下函数:isalnum()、isalpha()、isdigit()、islower()、isupper()

每个测试的结果应该打印到不同的行。

样本输入qA2

示例输出(必须打印到单独的行,如果至少有一个字母通过,则为True;如果所有字母都未通过每个测试,则为false):True

True

True

True

True

我写这个是为了一个测试。当然,我可以写5组不同的代码,但看起来很难看。然后我开始想我能不能把他们要求的所有测试循环一遍。

一个测试的代码:raw = 'asdfaa3fa'

counter = 0

for i in xrange(len(raw)):

if raw[i].isdigit() == True: ## This line is where I'd loop in diff func's

counter = 1

print True

break

if counter == 0:

print False

我尝试运行所有测试的循环失败:raw = 'asdfaa3fa'

lst = [raw[i].isalnum(),raw[i].isalpha(),raw[i].isdigit(),raw[i].islower(),raw[i].isupper()]

counter = 0

for f in range(0,5):

for i in xrange(len(raw)):

if lst[f] == True: ## loop through f, which then loops through i

print lst[f]

counter = 1

print True

break

if counter == 0:

print False

那么我该如何修改这些代码来实现上面的所有规则呢?

使用来自所有注释的信息-此代码满足上述规则,并动态循环每个方法。raw = 'ABC'

functions = [str.isalnum, str.isalpha, str.isdigit, str.islower, str.isupper]

for func in functions:

print any(func(letter) for letter in raw)

getattr方法(我认为这称为内省方法?)raw = 'ABC'

meths = ['isalnum', 'isalpha', 'isdigit', 'islower', 'isupper']

for m in meths:

print any(getattr(c,m)() for c in raw)

列表理解方法:from __future__ import print_function ## Changing to Python 3 to use print in list comp

raw = 'ABC'

functions = [str.isalnum, str.isalpha, str.isdigit, str.islower, str.isupper]

solution = [print(func(raw)) for func in functions]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值