Python 中的range(),以及列表切片方法


Posted in Python onJuly 02, 2018

range()函数配合循环一块使用很方便,今天来整理一下这个函数的主要用法,以及几个小例子

首先来看一下函数原型,非常简单:

range(start,end [,step])

或者连start都省略掉:

range(end)

其中,start表示开始点,end表示结束点,真正结束的位置是end的前一个值,step表示步长。

例如:

print(list(range(1,5)))
#list函数是将range的值列表化,这时候的输出为 1,2,3,4 (没有5!即不包括最后一个end的值)
print(list(range(1,5,2)))
#输出结果是 [1, 3] ,步长为2,而且小于5

如果只传入一个参数:

print(list(range(5)))
#输出结果是 [0, 1, 2, 3, 4] ,这时候默认从0开始

rang的这些使用,我们可以同列表的遍历结合起来,比如对一个列表进行遍历访问:

#首先我用一个range生成一个列表,其中包含0~9 10个元素
list1 =list(range(10))
# #使用range的方式进行遍历:
for i in range(len(list1)):
  print(list1[i])

#当然这种情况我们一般都是直接使用 for value in list1 就可以了
#如果使用切片,访问列表的一部分

for i in range(int(len(list1)/2)):
  print(list1[i])

#这样我们就可以得到列表中前一半元素,其他部分同理

有的时候我们还会用到一个列表的逆序,使用range可以这样:

list1 =list(range(10))
for i in range(len(list1)-1,0,-1):
  print(list1[i])
#注意这个地方开始的位置是len-1,因为我们使用的列表的下标,其实这里的使用与C语言是一致的,步长设置为-1
#就相当于我们在for循环的 i--了

使用循环的方式,我们可以在每次循环中对数据进行一些操作,但是如果仅仅是得到这些数据,我们可以利用列表的切片slide来做,切片的方式非常灵活,例如比较简单的:

list1 =list(range(10))
print(list1[:])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list1[3:])
# [3, 4, 5, 6, 7, 8, 9]
print(list1[3:5])
# [3, 4]
print(list1[1:5:2])
# [1, 3]

从这里我们可以看出切片的使用方式与range大同小异,都是三个参数,分别控制开始,结束以及步长,在range中我们可以使用 -1 ,那么同理,在切片中,同样如此,对于每一个列表项,不仅仅有一个正向的序号,还有一个反向的序号,最后一个元素可以使用list1[-1]来表示,倒数第二个元素就是list1[-2]….:

print(list1[1:-1])
# 这里表示从第一个元素到最后一个元素

如果逆序输出的话:

print(list1[-1::-1])
#或者简记为:
print(list1[::-1])

接下来是我之前遇到的一个问题,如何在一个列表中保存A-Z或者Z-A?

list2 = []
for i in range(ord('A'),ord('A')+26):
  list2.append(chr(i))
print(list2)

list3 = [chr(ord('A')+x) for x in range(26)]
print(list3)

这两种方法都可以生成一个包含A-Z的列表,对于这个问题,如果使用过其他语言,首先可能会使用int(‘A')获取A的ASCII,但是在Python中却会报错,因为这里int()函数是默认基与十进制的,对于字母转化为数字,有函数ord可以使用,有字母转化回ASCII则可以使用chr()函数,第二种方式是使用了列表生成式的方式,写起来比较简单,除了这些方法之外,还可以使用map()函数对列表的每一个值进行处理,在此不再介绍。

以上这篇Python 中的range(),以及列表切片方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中itertools模块用法详解
Sep 25 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python将list转为matrix的方法
Dec 12 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
Python Tornado核心及相关原理详解
Jun 24 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 #Python
分享vim python缩进等一些配置
Jul 02 #Python
实践Vim配置python开发环境
Jul 02 #Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 #Python
Django实现分页功能
Jul 02 #Python
详解python单元测试框架unittest
Jul 02 #Python
python中多层嵌套列表的拆分方法
Jul 02 #Python
You might like
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
javascript中FOREACH数组方法使用示例
2016/03/01 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
Python3使用requests发闪存的方法
2016/05/11 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python装饰器用法实例分析
2019/01/14 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
浅析python的Lambda表达式
2019/02/27 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python3 logging日志封装实例
2020/04/08 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
商场经理竞聘演讲稿
2014/01/01 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
运动会100米解说词
2014/01/23 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
nginx七层负载均衡配置详解
2022/07/15 Servers
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL