Python range()函数与列表切片详解
本文详细介绍Python中range()函数的三种参数用法及其与循环的结合,深入解析列表切片语法,包括正反向索引、步长控制及逆序输出。通过生成A-Z列表等实例,对比ord/chr与列表推导式,帮助开发者掌握高效的数据处理技巧。
range()函数常与循环结构配合使用,能显著提升代码简洁性。本文将梳理该函数的核心用法,并结合具体示例进行说明。
首先查看函数的基本原型,其定义如下:
range(start,end [,step])
此外,也可以省略start参数,仅指定end值。
range(end)
其中,start代表起始索引,end代表结束索引(实际取值不包含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
若仅传入一个参数,则默认start为0。
print(list(range(5))) #输出结果是 [0, 1, 2, 3, 4] ,这时候默认从0开始
结合range()与列表遍历是常见操作,例如遍历访问列表元素:
#首先我用一个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--了
虽然循环可在每次迭代中执行特定逻辑,但若仅需提取部分数据,利用列表切片(slice)更为便捷。切片语法灵活,基础用法如:
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')获取ASCII码,但在Python中直接对字符使用int()会报错,因为int()默认处理十进制整数。要实现字符与数字的转换,可使用ord()函数获取字符的Unicode码点,或使用chr()将码点还原为字符。此外,第二种方式利用了列表推导式,写法更为简洁。除上述方法外,还可使用map()函数对列表元素逐一处理,此处不再赘述。
以上就是Python中range()函数及列表切片方法的完整介绍,希望能为读者提供参考与帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









