小例子看python缩减代码

问题:  寻找文件最长的行。


第一版核心代码:

f = open('/etc/motd', 'r')

longest = 0

while True:

    linelen = len(f.readline().strip())

    if not linelen:

        break

    if linelen > longest:

        longest = linelen

f.close()

return longest


第二版核心代码:(for循环+尽早释放文件句柄)

f = open('/etc/motd', 'r')

longest = 0

allLines = f.readlines()

f.close()

for line in allLines:

    linelen = len(line.strip())

    if linelen > longest:

        longest = linelen

return longest


第三版核心代码: (列表推导(解析))

f = open('/etc/motd', 'r')

longest = 0

allLines =  [x.strip() for x in f.readlines()]

f.close()

for line in allLines:

    linelen = len(line)

    if linelen > longest:

        longest = linelen

return longest


第四版核心代码: (利用迭代器+max()内建函数)

f = open('/etc/motd', 'r')

allLineLens = [len(x.strip()) for x in f]

f.close()

return max(allLineLens)


第五版核心代码: (生成器表达式优化内存)

f = open('/etc/motd', 'r')

longest  = max(len(x.strip()) for x in f)

f.close()

return max(longest)


最终boss版核心代码:(文件操作默认读, python自动关闭文件)

return max(len(x.strip()) for x in open('/etc/motd'))





例子和代码来自于《python核心编程》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值