最近以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中的索引相关推荐

  1. python 其他语言_谈谈Python和其他语言的区别

    Python属于解释型语言,当程序运行时,是一行一行的解释,并运行,所以调式代码很方便,开发效率高, 还有龟叔给Python定位是任其自由发展.优雅.明确.简单,所以在每个领域都有建树,所有它有着非常 ...

  2. python语言例子_【Python】SimPy的使用示例-Go语言中文社区

    使用SimPY进行离散事件仿真 SimPY是一个Python下的第三方库,可以方便的进行离散事件的仿真.仿真速度比较快.下面记录一下我的一点心得,不保证完全正确,供参考. 安装 $ pip insta ...

  3. python加法例子_用python给小孩随机生成一组10以内加减法

    一.案例背景:同事家小孩子要上小学了,准备给小孩练习10以内加减法,为了解决出题的烦恼,希望我用python帮他实现,并保存到word里.近期在学习python,就当练手了,以后我们家娃也能用.代码简 ...

  4. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  5. python链表划分_《Python自然语言处理》——1.2 近观Python:将文本当做词链表-阿里云开发者社区...

    本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.2节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...

  6. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  7. mysql5.6 函数索引_聊聊MySQL中的索引

    关于MySQL中的索引使用 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的SQL性能问题. 索引的存储分类: 1.B-Tree索引:最常见的索引类型,大部分引擎都支 ...

  8. 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新

    数据库索引统计信息不一致 SQL Server was launched in 1993 on WinNT and it completed its 25-year anniversary recen ...

  9. pandas中dataframe索引排序实战:pandas中dataframe索引降序排序、pandas中dataframe索引升序排序

    pandas中dataframe索引排序实战:pandas中dataframe索引降序排序.pandas中dataframe索引升序排序 目录

最新文章

  1. (转载)H.264码流的RTP封包说明
  2. django mysql api_Django的API操作mysql中常用的语句
  3. HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)
  4. java 矩阵转置_图解利用Java实现数组转置
  5. 华硕z170a如何开启m2_跑得快也要站得稳,华硕灵珑II笔记本保护你的数据安全
  6. 【深度学习】深度学习入门——BP网络反向传播
  7. 爬虫python能做什么-Python 爬虫一 简介
  8. javascript:控制一个元素高度始终等于浏览器高度
  9. 区块链技术与微服务架构之间有什么关系?
  10. 硅谷真假u盘测试软件,硅谷硅谷真假u盘测试
  11. 使用html+css实现-静态开源案例-品优购
  12. 华为监事会副主席丁耘长跑28公里后突发疾病去世,年仅53岁!
  13. (3)安装插件-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  14. 未来,将是Captain technology新能源汽车的舞台
  15. InnoDB Buffer Pool 缓冲池详解
  16. 泰坦尼克号沉船生还预测
  17. 测绘程序设计——基础篇(1)C#编写方位角计算程序篇1——用户界面的构造
  18. 新版Chrome自动禁用第三方插件的解决办法[转]
  19. R语言二项分布(The Binomial Distribution)
  20. win 10找不到恢复环境怎么办?三种方法带你解决!

热门文章

  1. HUD 2544 最短路 迪杰斯特拉算法
  2. 打开SharePoint 2013 web application显示iis 欢迎页面
  3. eclipse安装aptana插件对html、js、jq、css等的提示
  4. AS3的Vector的初始化
  5. 用vim替代source insight
  6. 计算机技术中的常见概念
  7. 【ZOJ3899】State Reversing 解题报告
  8. cannot load such file -- readline
  9. 【NOIP2013模拟】七夕祭
  10. 微信扫码登录实现原理