python索引例子_谈谈python中的索引
最近以python为工具,取代VBA处理工作中Excel遇到的小问题,我觉得其优点:一是语言更清爽友善,因为VBA的语言一来IDE难用,语法风格不大气优雅(我个人的见解):二是,我一直怀疑Excel对数据的处理能力,因为Excel在数据量稍大、公式包含太多时致命的卡顿;超过几万行,各种sumif,countif就像个笑话,vlookup动则开启右下角的线程缓慢爬坡;VBA因为先天基因问题,也不能拯救这个问题。
好了回到正题,我在python使用中,发现索引index是个常常遇见的混淆点,问题虽然很细,但是这关系到元素的定位、引用和循环处理计数问题,如果不清晰就非常容易犯错,现在尝试总结如下:
① range()函数,众所周知区间是左闭右开区间的:
range(5) # 得到:[0,1,2,3,4]
range(1,5) # 得到:[1,2,3,4]
range()中索引默认是从0开始。由于len()函数得到列表的元素个数,所以迭代的时候常常和range()组合使用:
a = [i for i in range(5)] # 得到:[0, 1, 2, 3, 4]
for i in range(len(a)): # 循环5次
print (i)
这样的好处是,循环过程中,利用range得到的数字序列与数据结构(list,dataframe等)的索引刚好能对应等同,方便使用。
② .iloc()方法,根据索引来引用,索引也是从0开始
举个栗子:# 这里使用df1作为DataFram的例子
df1[0:2] # 只一个参数,默认显示行,这里显示效果为:0-1行的数值,区间前闭后开
df1.iloc[2] # 只有一个参数,默认为行索引,这里显示index=2的行数据
df1.iloc[1:3,2:4] # 第一个参数指定第1到第3行(即1,2行,不包含3),第一个参数指定第2到第4列(即2,3列,不包含4)。即:索引为整数时,也是前闭后开区间!
③ openpyxl模块
openpyxl专门处理Excel2007及以上版本产生的xlsx文件,可读写excel表;值得注意的也是索引问题:
1) Worksheet对象的sheetname索引是从0开始的,例如:
sheet1表示为wb.worksheets[0];
2) 单元格Cell的row和column都是从1开始的;
# 获取A1单元格,二者等同
c1=ws.cell('A1')
c2=ws.cell(row=1,column=1)
④ 其他:关于默认区间为左开右闭的理解:
Python为啥默认是左闭右开区间呢,我研读了网上其他大佬的分享,当然原因很多,包括编程语言的历史继承问题、内存地址从0开始的习惯问题等,但是我这里可以简单理解为:
左闭:为了优雅处理0的问题。考虑到最小的自然数是0,假设不是闭区间,如果想表示0,1,2,3,4,5,就得是-1< I ≤5了,这太不优雅,所以选择:0 ≤ I ≤ 5;
右开:为了优雅处理空集问题。假设不是开区间,而是两端闭区间,若想表示空集,就得是:0 ≤ i ≤ -1,这违法我们下界小于上界的直觉,舍弃。使用开区间,表示空集:0 ≤ i < 0,嗯,感觉好多了。
Life is short, you need Python!
人生苦短, 我用python
-- Bruce Eckel
python索引例子_谈谈python中的索引相关推荐
- python 其他语言_谈谈Python和其他语言的区别
Python属于解释型语言,当程序运行时,是一行一行的解释,并运行,所以调式代码很方便,开发效率高, 还有龟叔给Python定位是任其自由发展.优雅.明确.简单,所以在每个领域都有建树,所有它有着非常 ...
- python语言例子_【Python】SimPy的使用示例-Go语言中文社区
使用SimPY进行离散事件仿真 SimPY是一个Python下的第三方库,可以方便的进行离散事件的仿真.仿真速度比较快.下面记录一下我的一点心得,不保证完全正确,供参考. 安装 $ pip insta ...
- python加法例子_用python给小孩随机生成一组10以内加减法
一.案例背景:同事家小孩子要上小学了,准备给小孩练习10以内加减法,为了解决出题的烦恼,希望我用python帮他实现,并保存到word里.近期在学习python,就当练手了,以后我们家娃也能用.代码简 ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python链表划分_《Python自然语言处理》——1.2 近观Python:将文本当做词链表-阿里云开发者社区...
本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.2节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- mysql5.6 函数索引_聊聊MySQL中的索引
关于MySQL中的索引使用 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题. 索引的存储分类: 1.B-Tree索引:最常见的索引类型,大部分引擎都支 ...
- 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新
数据库索引统计信息不一致 SQL Server was launched in 1993 on WinNT and it completed its 25-year anniversary recen ...
- pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序
pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录
最新文章
- (转载)H.264码流的RTP封包说明
- django mysql api_Django的API操作mysql中常用的语句
- HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)
- java 矩阵转置_图解利用Java实现数组转置
- 华硕z170a如何开启m2_跑得快也要站得稳,华硕灵珑II笔记本保护你的数据安全
- 【深度学习】深度学习入门——BP网络反向传播
- 爬虫python能做什么-Python 爬虫一 简介
- javascript:控制一个元素高度始终等于浏览器高度
- 区块链技术与微服务架构之间有什么关系?
- 硅谷真假u盘测试软件,硅谷硅谷真假u盘测试
- 使用html+css实现-静态开源案例-品优购
- 华为监事会副主席丁耘长跑28公里后突发疾病去世,年仅53岁!
- (3)安装插件-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
- 未来,将是Captain technology新能源汽车的舞台
- InnoDB Buffer Pool 缓冲池详解
- 泰坦尼克号沉船生还预测
- 测绘程序设计——基础篇(1)C#编写方位角计算程序篇1——用户界面的构造
- 新版Chrome自动禁用第三方插件的解决办法[转]
- R语言二项分布(The Binomial Distribution)
- win 10找不到恢复环境怎么办?三种方法带你解决!