首页 > 其他分享 >一例生成器sample

一例生成器sample

时间:2024-04-28 11:12:19浏览次数:10  
标签:sub camelcase 一例 zipped 生成器 sample result str

举例

def underscore_to_camelcase(s):
    def camelcase():
        yield str.lower
        while True:
            yield str.capitalize

    return ''.join(f(sub) for sub, f in zip(s.split('_'), camelcase()))

拆解

from collections.abc import Iterator


def underscore_to_camelcase(s):
    def camelcase():  # 生成器函数
        yield str.lower
        while True:
            yield str.capitalize

    generator_functions_call_result = camelcase()
    print(type(generator_functions_call_result))  # <class 'generator'>

    zipped = zip(s.split('_'), generator_functions_call_result)
    print(isinstance(zipped, Iterator))  # True, 返回的是迭代器对象, 下面f in zipped是最好的证明

    result = (f(sub) for sub, f in zipped)  # 生成器表达式, f为高阶函数
    print(type(result))  # <class 'generator'>

    return ''.join(result)


print(underscore_to_camelcase("where_are_you"))

  1. camelcase是生成器函数,返回str.lower, str.capitalize, str.capitalize ...
  2. camelcase()是返回了一个生成器(是迭代器的一种特殊类型)
  3. zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的(迭代器)对象, 是惰性的(python2中返回的是List对象)
  4. 列表推导式 vs 生成器表达式: 前者是[]后者是()

这样拆分以后就没有那么magic了.

标签:sub,camelcase,一例,zipped,生成器,sample,result,str
From: https://www.cnblogs.com/echo1937/p/18163314

相关文章

  • SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)
    前言熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller)、业务类(Service)、持久层(Repository)、数据库映射(Mapper)、各种DO类构成了我们服务端的代码。初学的时候,觉得新鲜手写这些东西不觉得有啥,但是写久了就会觉得很烦。好不容易在数据库中写完了一遍字段,在Java代码又要......
  • 关于 SPL 性能问题一例
    sqlSELECTCOUNT(1)FROM(selectdistincta.project_number"project_number",a.project_name"project_name",b.contract_number"contract_number",b.contract_name"con......
  • .net开发还在使用guid吗?下面几种id生成器更加合适
    <ItemGroup><PackageReferenceInclude="IdGen"Version="3.0.5"/><PackageReferenceInclude="Nanoid"Version="3.0.0"/><PackageReferenceInclude="Snowflake.Core"Version=&......
  • 36.mybatis-plus代码自动生成器
    很重要的功能:参考官网:https://baomidou.com/pages/779a6e/#快速入门mybatis-plus自动帮你生成pojocontroller.....东西没啥废话上代码这个依赖: <dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifa......
  • 使用 NestJS 和 qrcode.js 创建 QR 码生成器 API
    前言QR码(QuickResponseCode)是一种二维码,于1994年开发。它能快速存储和识别数据,包含黑白方块图案,常用于扫描获取信息。QR码具有高容错性和快速读取的优点,广泛应用于广告、支付、物流等领域。通过扫描QR码,用户可以快速获取信息和实现便捷操作,为现代生活带来便利。在本教程中,小编......
  • 含子查询sql优化案例一例
    0.排查sqlselectEXECSQLEXECTIMERANGE,count(*)fromSQLLOG_OA_2024groupbyEXECSQLEXECTIMERANGEselectexecsqlstr,paramsstr,count(*)from(selectto_char(execsqlstr)execsqlstr,to_char(paramsstr)paramsstr,length(paramsstr)fromSQLLOG_OA_2024where......
  • 12.迭代器 与 生成器
    【一】迭代器1)概念迭代器用来迭代去取值的工具,迭代是反复取值的过程每一次迭代返回的结果是下一次开始的初始值2)可迭代对象内置有iter()的方法的对象都是可迭代对象num=[1,2,3]print(num.__iter__())#<list_iteratorobjectat0x000001F3C5589420>可迭代对象字符串......
  • mybatis-plus 代码生成器步骤
    mybatis-plus代码生成器步骤:1.添加依赖到pom.xml<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency>&l......
  • Spark SQL 抽样函数 ——TABLESAMPLE 的坑点
    最近需要实现一段SparkSQL逻辑,对数据集进行抽样指定的行数。由于数据集较大,刚开始的逻辑是,取窗口函数随机排序后row_number的前n行。但运行速度较慢,所以想起了TABLESAMLE函数,支持直接取Rows,尝试后发现速度特别快,基本上几秒内就完成对亿级数据的采样。所以好奇就去查......
  • 迭代器、生成器
    【一】迭代器【1】介绍迭代器即用来迭代取值的工具,而迭代是重复反馈的过程的活动其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次”迭代“而每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代whileTrue:msg=input('>>:').st......