Python读execl之xlrd库函数详解三:行、列相关

准备工作:

  • 准备工作和所用材料和《Python读execl之xlrd库函数详解一:工作簿相关》一致。
    在这里插入图片描述

库函数:

行、列相关

  • row_len(self, rowx) #返回该列的有效单元格长度
#-*- encoding:utf-8 -*-

import xlrd,json

def openexec():
    book1 = xlrd.open_workbook('datalist.xlsx') # 打开表格
    a = book1.sheet_by_name(u"附件2《自费家属体检名单统计表》") # 使用sheet名称获取工作簿
    print(a.row_len(15))	#返回第15列的有效单元格长度	
openexec()

输出结果为:16,如图:

在这里插入图片描述

  • row(self, rowx) #返回由该行中所有的单元格对象组成的列表
    print(str(a.row(3).decode("unicode-escape"))

输出结果为:number:1.0, text:u'0054', text:u'张1', text:u'12451', text:u'体系54', text:u'部门54', text:u'岗位54', text:u'赵1', text:u'配偶父母', number:176.0, text:u'已婚', text:u'12465', number:199054.0, number:59.0, text:u'女', text:u'女'

  • get_rows(self) #返回遍历每一行的生成器
    print(a.get_rows())

输出结果为:<generator object <genexpr> at 0x0000000002EB6120>

  • row_types(self, rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据类型组成的列表
    print(a.row_types(5))

输出结果为:array('B', 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1)

  • row_values(self, rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表
    print(str(a.row_values(5)).decode("unicode-escape")) #需要进行格式转换

输出结果为:3.0, u'0056', u'张3', u'12453', u'体系56', u'部门56', u'岗位56', u'赵3', u'配偶父母', 178.0, u'已婚', u'12467', 199056.0, 66.0, u'女', u'女'

  • row_slice(self, rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的对象组成的列表 **
    print(str(a.row_slice(5)).decode("unicode-escape")) #需要进行格式转换

输出结果为:number:3.0, text:u'0056', text:u'张3', text:u'12453', text:u'体系56', text:u'部门56', text:u'岗位56', text:u'赵3', text:u'配偶父母', number:178.0, text:u'已婚', text:u'12467', number:199056.0, number:66.0, text:u'女', text:u'女'

  • col_slice(self, colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的对象组成的列表 **
    print(str(a.col_slice(0)).decode("unicode-escape")) #需要进行格式转换,表格有合并,所以只有1列

输出结果为:text:u'员工自费家属体检名单', text:u'诺瓦员工信息填写', text:u'序号', number:1.0, number:2.0, number:3.0, number:4.0, number:5.0, number:6.0, number:7.0, number:8.0, number:9.0, number:10.0, number:11.0, number:12.0, number:13.0, number:14.0, number:15.0, number:16.0, number:17.0, number:18.0, number:19.0, number:20.0, number:21.0, number:22.0, number:23.0, number:24.0, number:25.0, number:26.0, number:27.0, number:28.0, number:29.0, number:30.0, number:31.0, number:32.0, number:33.0, number:34.0, number:35.0, number:36.0, number:37.0, number:38.0, number:39.0, number:40.0, number:41.0, number:42.0, number:43.0, number:44.0, number:45.0, number:46.0, number:47.0, number:48.0, number:49.0, number:50.0, number:51.0, number:52.0, number:53.0, number:54.0, number:55.0, number:56.0, number:57.0, number:58.0, number:59.0, number:60.0, number:61.0, number:62.0, number:63.0, number:64.0, number:65.0, number:66.0, number:67.0, number:68.0, number:69.0, number:70.0, number:71.0, number:72.0, number:73.0, number:74.0, number:75.0, number:76.0, number:77.0, number:78.0, number:79.0, number:80.0, number:81.0, number:82.0, number:83.0, number:84.0, number:85.0, number:86.0, number:87.0, number:88.0, number:89.0, number:90.0, number:91.0, number:92.0, number:93.0, number:94.0, number:95.0, number:96.0, number:97.0, number:98.0, number:99.0, number:100.0, number:101.0, number:102.0, number:103.0, number:104.0, number:105.0, number:106.0, number:107.0, number:108.0, number:109.0, number:110.0, number:111.0, number:112.0, number:113.0, number:114.0, number:115.0, number:116.0, number:117.0, number:118.0, number:119.0, number:120.0, number:121.0, number:122.0, number:123.0, number:124.0, number:125.0, number:126.0, number:127.0, number:128.0, number:129.0, number:130.0, number:131.0, number:132.0, number:133.0, number:134.0, number:135.0, number:136.0, number:137.0, number:138.0, number:139.0, number:140.0, number:141.0, number:142.0, number:143.0, number:144.0, number:145.0, number:146.0, number:147.0, number:148.0, number:149.0, number:150.0, number:151.0, number:152.0, number:153.0, number:154.0, number:155.0, number:156.0, number:157.0, number:158.0, number:159.0, number:160.0, number:161.0, number:162.0, number:163.0, number:164.0, number:165.0, number:166.0, number:167.0, number:168.0, number:169.0, number:170.0, number:171.0, number:172.0, number:173.0, number:174.0, number:175.0, number:176.0, number:177.0, number:178.0, number:179.0, number:180.0, number:181.0, number:182.0, number:183.0, number:184.0, number:185.0, number:186.0, number:187.0, number:188.0, number:189.0, number:190.0, number:191.0, number:192.0, number:193.0, number:194.0, number:195.0, number:196.0, number:197.0, number:198.0, number:199.0, number:200.0

  • col_values(self, colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表
    print(str(a.col_values(0)).decode("unicode-escape")) #需要进行格式转换,表格有合并,所以只有1列

输出结果为:u'员工自费家属体检名单', u'诺瓦员工信息填写', u'序号', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0, 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0, 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0, 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0, 112.0, 113.0, 114.0, 115.0, 116.0, 117.0, 118.0, 119.0, 120.0, 121.0, 122.0, 123.0, 124.0, 125.0, 126.0, 127.0, 128.0, 129.0, 130.0, 131.0, 132.0, 133.0, 134.0, 135.0, 136.0, 137.0, 138.0, 139.0, 140.0, 141.0, 142.0, 143.0, 144.0, 145.0, 146.0, 147.0, 148.0, 149.0, 150.0, 151.0, 152.0, 153.0, 154.0, 155.0, 156.0, 157.0, 158.0, 159.0, 160.0, 161.0, 162.0, 163.0, 164.0, 165.0, 166.0, 167.0, 168.0, 169.0, 170.0, 171.0, 172.0, 173.0, 174.0, 175.0, 176.0, 177.0, 178.0, 179.0, 180.0, 181.0, 182.0, 183.0, 184.0, 185.0, 186.0, 187.0, 188.0, 189.0, 190.0, 191.0, 192.0, 193.0, 194.0, 195.0, 196.0, 197.0, 198.0, 199.0, 200.0

  • col_types(self, colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据类型组成的列表
    print(str(a.col_types(0)).decode("unicode-escape")) #需要进行格式转换,表格有合并,所以只有1列

输出结果为:1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2

本文转载于网络 如有侵权请联系删除

相关文章

  • 协同过滤推荐算法在python上的实现

    大家好,又见面了,我是你们的朋友全栈君。1.引言信息大爆炸时代来临,用户在面对大量的信息时无法从中迅速获得对自己真正有用的信息。传统的搜索系统需要用户提供明确需求,从用户提供的需求信息出发,继而给用户展现信息,无法针对不同用户的兴趣爱好提供相应的信息反馈服务。推荐系统相比于搜索系统,不需要提供明确需求,便可以为每个用户实现个性化推荐结果,让每个用户更便捷地获取信息。它是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。智能推荐的方法有很多,常见的推荐技术主要分为两种:基于用户的协同过滤推荐和基于物品的协同过滤推荐。基于用户的协同过滤的基本思想相当简单,基于用户对物品的偏好找到邻居用户,然后将邻居用户喜欢的物品推荐给当前用户。计算上就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到N个邻居后根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图10-1给出了一个例子:对于用户A,根据用户的历史偏好,这里只计算得到一个邻居用户C,然后将用户C喜欢的物品D推荐给用户A。基于物品的协同过滤推荐的原理和

  • Wiztalk | 099期 陶阳宇《机器学习平台如何兼顾工业界的高可用性和学术界的创新性-Angel详解及产业应用案例》

    机器学习平台如何兼顾工业界的高可用性和学术界的创新性 Part2Angel详解及产业应用案例分享专家:腾讯数据平台部总监 陶阳宇内容简介:98期我们知道了Angel平台的发展历程和基础架构,但为什么很多企业愿意去使用这个系统平台呢?本期陶阳宇专家工程师将向我们详细讲解Angel平台的兼容性以及其在管理上的应用案例。内容难度:★★☆(计算机专业或有一定计算机知识储备的大学生)以下为精彩视频关注更多精彩短视频,点击下方程序小卡片 也可点击“阅读原文”或打开“哔哩哔哩”搜索关注“Wiztalk”,一起开启科普知识分享“新视界”~—关于Wiztalk — Wiztalk是腾讯高校合作团队打造的一个短视频知识分享系列,每集10分钟左右,致力于跟随科技的发展以及时代的步伐,使用更为科普化的方式传播最新、最热门、最通用的知识。点击“阅读原文”,进入Bilibili关注“Wiztalk”

  • torch.optim

    如何使用一个优化器为了使用torch.optim,你必须构建一个优化对象,那将会保持现有的状态,并且基于计算的来更新参数。构建它为了构建一个优化器,你必须给定一个用来优化的参数的迭代器(所有应该是变量s)。然后,你能指定优化指定选项,例如学习率、权重衰减等。注意:IfyouneedtomoveamodeltoGPUvia.cuda(),pleasedosobeforeconstructingoptimizersforit.Parametersofamodelafter.cuda()willbedifferentobjectswiththosebeforethecall.Ingeneral,youshouldmakesurethatoptimizedparametersliveinconsistentlocationswhenoptimizersareconstructedandused.如果你通过.cuda()将一个模型移动到GPU,对它请在构建优化器之前这么做。.cuda()之后的模型参数与调用之前的参数是不同的对象。通常情况下,你应该确保使得优化在连续的位置上,当优化器构建和使用的

  • python的ftp功能程序

    ftp类模块: #!/usr/bin/python #-*-coding:utf-8-*- fromftplibimportFTP importsys importdatetime importos.path importConfigParser time=datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S') classFtp:  def __init__(self,IP,USERNAME,PASSWD,URL,FILENAME):     """初始化ip和端口"""     self.IP=IP     self.USERNAME=USERNAME     self.PASSWD=PASSWD     self.URL=URL     self.FILENAME=FILENAME  defftp_down(self):     try:       ftp=FTP(self.IP)     exceptException:       pri

  • 干货 | 20个教程,掌握时间序列的特征分析(附代码)

    作者|SelvaPrabhakaran译者|Tianyu责编|Jane出品|AI科技大本营(ID:rgznai100)【导语】时间序列是指以固定时间为间隔的序列值。本篇教程将教大家用Python对时间序列进行特征分析。1、什么是时间序列?时间序列是指以固定时间为间隔的、由所观察的值组成的序列。根据观测值的不同频率,可将时间序列分成小时、天、星期、月份、季度和年等时间形式的序列。有时候,你也可以将秒钟和分钟作为时间序列的间隔,如每分钟的点击次数和访客数等等。为什么我们要对时间序列进行分析呢?因为当你想对一个序列进行预测时,首先要完成分析这个步骤。除此之外,时间序列的预测也具有极大商业价值,如企业的供求量、网站的访客量以及股票价格等,都是极其重要的时间序列数据。那么,时间序列分析都包括哪些内容呢?要做好时间序列分析,必须要理解序列的内在属性,这样才能做出更有意义且精准的预测。2、如何在Python中引入时间序列?关于时间序列的数据大都存储在csv文件或其他形式的表格文件里,且都包含两个列:日期和观测值。首先我们来看panda包里面的read_csv()函数,它可以将时间序列数据集(关于澳大

  • 在Kettle里使用参照表进行数据校验(流查询实现)

    参照表一个常见的用途就是做数据的查询和检验。提供一个输入字段,如果输入字段里的值没有匹配上,就给对应的数据行做一个错误标志。下面使用城市和邮政编码查询做个例子,演示如何使用计算器步骤和查询步骤来判断地址和邮政编码是否匹配。完整的转换如下图: 首先,需要一些输入数据,本例使用了“自定义常量数据”步骤,并添加一些测试数据作为输入,如下图: 第一个清洗步骤就是从邮政编码里提取数字,要使用计算器步骤。在计算器步骤选择“ReturnonlydigitsfromstringA”,新增加一个字段保存这些数字,字段名使用像PC4_1这样有业务含义的字段名。然后就需要一个参照表。这里也是用“自定义常量数据”步骤来模拟一个参照表,如下图: 根据PC4_1字段里的四位数字,再使用“流查询”步骤从参照表中查询城市名称。为了后面再处理没有查询到的数据,建议在查询失败时,使用一个容易识别的默认值,下图显示了完整的流查询步骤,这里设置的查询失败的默认值是“***unknown***”。 这里设置的默认值的前缀和后缀都是***,这样设置有两个目的:首先,检查数据的时候比较容易找到这些异常数据;其次,查询

  • 五月福利-腾讯云代金券

    腾讯云为了包揽更多的云用户并且在与阿里云争夺云服务市场,所以会给新用户很多福利。其中最吸引人的还是2860元代金券。领取代金券先给大家提供领取地址吧:https://cloud.tencent.com/redirect.php?redirect=1040&cps_key=75dcde00531ca2eecaeea6ac644592d9&from=console点击领取接下来就给大家介绍如何使用代金券使用代金券在【费用中心】>【资金管理】>【代金券管理】页面中可查看用户账户下的代金券情况。 用户在购买、续费、变更配置包年包月产品时,可在付款页面自主选用代金券。(选购流程可参考购买云服务)所有代金券都会展示在订单下方,系统会根据订单对应的产品、计费方式、订单金额、购买时长等限制条件匹配可用代金券,只有所有限制条件和订单信息都符合的待使用状态代金券才可用于支付该订单。设置了自动续费的资源,系统自动续费时,优先使用适用代金券抵扣费用,再使用账户余额进行扣费。(详情请查看系统自动选用规则,如何设置自动续费可参考续费管理)一个订单只能使用一张代金券,支付订单时如果有多张

  • 菲律宾经济特区起草加密资产相关法规,计划发放25个交易所许可证

    菲律宾政府所有的经济特区的权威正在起草加密资产的规则,并计划将其发行的许可证数量限制在25个。其他规则包括要求在两年内投资至少100万美元。据报道,到目前为止,当局已经收到了大约60份来自加密资产公司的申请。 据菲律宾政府新闻通讯社PhilippineNewsAgency报道,菲律宾的Cagayan经济特区(CEZA)是制定保护加密资产投资者的规则。CEZA是政府拥有和控制的机构,负责管理卡加延经济特区和自由港事务。据新闻媒体报道: CEZA计划成为金融科技投资中心。 根据首席执行官兼行政长官RaulLambino的说法,CEZA“正在制定法规,保护那些投资于加密资产的人。” Lambino在本周的一份声明中表示,该机构: 将继续严格审查那些有意在菲律宾启动ICO的公司的诚信。这些公司将在CEZA注册。 CEZA宣布,将给10家加密资产公司发放牌照,鼓励这些公司利用税收优势,创造就业机会。 Lambino在接受路透社的采访时表示: 我们即将为10个加密资产交易所发放牌照,这些交易所来自日本、中国香港、马来西亚以及韩国。他们可以进行加密资产挖矿、ICO以及其他他们被允许进行的交易。而将法

  • 大数据行业应用与创业机会(63PPT)

    点击标题下「大数据文摘」可快捷关注感谢九次方公司(微信ID:bj-jusfoun)的无私分享,超值!回复“九次方”可同时获得《九次方-大数据行业应用与创业机会》 《九次方·金融大数据白皮书》 《中国产业链大数据白皮书》【PPT摘要】大数据、大趋势、新格局大数据概论---大数据的理论和诞生背景---大数据的技术理论---大数据的发展阶段---大数据的商业价值大数据的行业应用与创业机会 ---各行业的大数据应用实例---大数据的发展趋势与创业热点分析

  • SpringBoot整合Mybatis

    介绍一下SpringBoot整合mybatis,数据库选用的是mysql。首先创建数据库CREATEDATABASEtest;复制建表以及插入初始数据(sql是从navicat中导出的)SETNAMESutf8mb4; SETFOREIGN_KEY_CHECKS=0; ------------------------------ --Tablestructureforuser ------------------------------ DROPTABLEIFEXISTS`user`; CREATETABLE`user`( `id`int(11)NOTNULLAUTO_INCREMENT, `user_name`varchar(255)NOTNULL, `user_password`varchar(255)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBAUTO_INCREMENT=13DEFAULTCHARSET=latin1; ------------------------------ --Recordsofuser ---------

  • 用C来实现内存池

    介绍:      设计内存池的目标是为了保证服务器长时间高效的运行,通过对申请空间小而申请频繁的对象进行有效管理,减少内存碎片的产生,合理分配管理用户内存,从而减少系统中出现有效空间足够,而无法分配大块连续内存的情况。目标:   此次设计内存池的基本目标,需要满足线程安全性(多线程),适量的内存泄露越界检查,运行效率不太低于malloc/free方式,实现对4-128字节范围内的内存空间申请的内存池管理(非单一固定大小对象管理的内存池)。内存池技术设计与实现   本内存池的设计方法主要参考SGI的alloc的设计方案,为了适合一般的应用,并在alloc的基础上做一些简单的修改。   Mempool的内存池设计方案如下(也可参考候捷《深入剖析STL》)   从系统申请大块heap内存,在此内存上划分不同大小的区块,并把具有相同大小的区块连接起来,组成一个链表。比如A大小的块,组成链表L,当申请A大小时,直接从链表L头部(如果不为空)上取到一块交给申请者,当释放A大小的块时,直接挂接到L的头部。内存池的原理比较简单,但是在具体实现过程中大量的细节需要注意。   1:字节对齐。   为了方便

  • 20175212课下作业 MyCP

    20175212课下作业MyCP 要求 编写MyCP.java实现类似Linux下cpXXX1XXX2的功能,要求MyCP支持两个参数: javaMyCP-txXXX1.txtXXX2.bin用来把文本文件(内容为十进制数字)转化为二进制文件 javaMyCP-xtXXX1.binXXX2.txt用来二进制文件把转化为文本文件(内容为十进制数字) 核心代码 publicstaticStringdataInputStream(Stringinfile)throwsIOException{ Filefile=newFile(infile); DataInputStreamdps=newDataInputStream(newFileInputStream(file)); StringBuilderbyData=newStringBuilder(); bytebt=0; for(inti=0;i<file.length();i++){//以二进制回一个字符串表示形式 bt=dps.readByte(); Stringstr=Integer.toBinaryString(bt); if

  • 异常:springBoot启动com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited起不来

    springboot加载到dataSource后一直显示加载中1.问题:加载到如下这里,一直处于加载中状态     2.排查:mapper中的断点排查     3.结论:因为断点打到mapper文件中,造成spring启动加载mapper文件时遇到断点阻断,所以整个服务处于停止等待状态。原文链接:https://blog.csdn.net/qq_42445425/article/details/124098218 我是个双鱼座的小王子,沉浸在自己的代码世界里,去探索这未知的世界,希望遇到更多的小伙伴一起前行!

  • 网站的内链反链黑链

    导入链接的质量直接决定了我们的网站在搜索引擎中的权重 (其实就是说从别的网站有自己网站的链接,这个链接就称为外链,比如你跟其他网站交换友情链接,) 内链: 就是在同一网站域名下的内容页面之间的互相链接 (自己网站的内容链接到自己网站的内部页面,也称之为站内链接) 反链: 反链不同于友情链接,它是单向链向你站的文字链接或图片带有ALT文字的链接或其它能够让现有搜索技术搜索到的链接 (通俗的来说就是抛开你自己的网站,就外部网络而言,有多少其他网站的页面内有你的链接,有你的网址的意思) 黑链: 它就是指一些人用非正常的手段获取的其它网站的反向链接,最常见的黑链就是通过各种网站程序漏洞获取搜索引擎权重或者PR较高的网站的WEBSHELL,进而在被黑网站上链接自己的网站

  • Spring Framework5.0 学习(3)—— spring配置文件的三种形式

     SpringFramework 是IOC(InversionofControl 控制反转)原则的实践。 IoCisalsoknownas dependencyinjection (DI 依赖注入)。 org.springframework.beans 和 org.springframework.context 两个包实现了Ioc 容器。 BeanFactory接口的子接口 ApplicationContext 定义了容器的基本功能。如果是web app 使用的是 WebApplicationContext 。   这个容器的作用正如上图,把定义在配置文件中的 POJO的关系解析并实例化,应用业务系统。   POJO:PlainOldJavaObject。 spring配置文件有以下三种形式: 传统的XML Spring2.5 以后新增注解配置 Spring3.0 

  • ELFhash - 优秀的字符串哈希算法

     ELFhash-优秀的字符串哈希算法 2016年10月29日22:12:37阅读数:6440更多 个人分类:算法杂论算法精讲数据结构 所属专栏:算法与数据结构   版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/ltyqljhwcm/article/details/52966874 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串有可能重复也有可能不重复 C不像Python有字典类型的数据结构,我们没有办法吧字符串当做是键值来保存,所以说我们需要一种hash函数将每个字符串都尽可能减少冲突的情况下去应设一个唯一的整形数据,方便我们的保存,这里我们就引入了字符串hash算法   现在,有非常多的字符串hash算法都很优秀,本文主要面对ELFhash算法来表述,相对来说比较的清晰 2.ELFhash 首先我需要声明,字符串hash算法ELFhash的算法的形成的三列的均匀性我不会证明 根据其他的大牛的描述,ELFhash算法对于长字符串和短字符串都有优良的

  • URL编程

    URL(UniformresourceLocator):统一资源定位符,他表示Internet上某一资源的地址。 URL的基本结构: <传输协议>://<主机名>:<端口号>/<文件名>#片段名?参数列表   1importjava.net.MalformedURLException; 2importjava.net.URL; 3 4publicclassURLTest{ 5publicstaticvoidmain(String[]args){ 6try{ 7URLurl=newURL("https://blog.csdn.net/lijibai_/article/details/124122267?spm=1001.2014.3001.5501"); 8//获取该url的协议名 9System.out.println("协议名:"+url.getProtocol()); 10//获取url的主机名 11System.out.println("主机名:"+url.getHost()); 12//获取url的端口号 13Syst

  • 图片压缩最保真方法

    可以支持按比例裁剪和缩放图片,限制生成的图片大小,最多3次缩放就可以达到想要的图片。代码:复制 /** *@parambitmap原图 *@paramwh宽高比例:5:4就是0.8 *@parammaxBytes最大字节数例:小程序限制128kmaxBytes就是1028*128 */ publicstaticbyte[]creatBitmapByWidth(Bitmapbitmap,floatwh,intmaxBytes){ //裁剪 intw=bitmap.getWidth(); inth=bitmap.getHeight(); BitmapmyBitmap=null; if(wh>0){ myBitmap=Bitmap.createBitmap(bitmap,0,0,w,(int)(((float)w)*wh)); bitmap.recycle(); }else{ myBitmap=bitmap; } //缩放 byte[]myBytes=null; BitmapnewBitmap=null; floatdefaulSacle=0f; myBytes=ShareUt

  • [Luogu P4168] [Violet]蒲公英 (分块)

    题面 洛咕 Solution 题目要求求出区间众数,强制在线。 区间众数是一个比较尴尬的问题,我们无法用区间数据结构来处理这个问题,因为我们没法很好的合并区间众数的答案。 既然区间数据结构解决不了这个问题,我们可以考虑一下使用基于分块的算法,例如莫队。 这题用莫队非常好处理,不幸的是,这题要求强制在线。 因此我们考虑使用分块算法。 分块算法的核心在于把一整个块的信息压缩起来以便快速处理。 我们要查询一段区间的众数,我们可以考虑这样搞:对于这个区间内连续的块,我们先快速地查询这个连续的块中的众数,然后我们暴力处理这个区间剩余的左右两个零散的点,开一个桶暴力维护这些零散的点每个颜色出现的次数,每新加入一个点,就与整个区间的答案比较一下,如果更优就替换答案。 为了实现上面那个思路,我们必须要实现两点:快速求出一段连续块的每个颜色出现的次数,快速求出一段连续块的众数。 对于第一个问题,解决方法很简单,我们暴力做前缀和即可,复杂度\(O(n*\sqrtn)\) for(inti=1;i<=cnt_block;i++) { for(intj=1;j<=to;j++) pr

  • 80. Remove Duplicates from Sorted Array II

    importjava.util.HashMap; importjava.util.Map; publicclassSolution{ publicintremoveDuplicates(int[]nums){ intsize=nums.length; Map<Integer,Integer>map=newHashMap<Integer,Integer>(); intindex=0; for(inti=0;i<size;i++) { if(!map.containsKey(nums[i])) { map.put(nums[i],0); nums[index]=nums[i]; index++; } else { if(map.get(nums[i])==0) { map.put(nums[i],1); nums[index]=nums[i]; index++; } } } returnindex; } }复制  

  • html页面高亮关键词

        functionhightLightTheKeyWord(searchParam,$dom){ if(searchParam&&!/^\s*$/.test(searchParam)){ searchParam=regTrim(searchParam); varcontents=$dom.html(); varpattern=newRegExp('('+searchParam+')(?=[^<>]*<)','gim'); contents=contents.replace(pattern,"<spanstyle='color:blue'>$1</span>"); $dom.html(contents); } } functionregTrim(s){ varimp=/[\^\.\\\|\(\)\*\+\-\$\[\]\?]/g; varimp_c={ "^":"\\^", ".":"\\.", "\\":"\\\\", "|":"\\|", "(":"\\(", ")":"\\)", "*":"\

相关推荐

推荐阅读