Python3中对range()逆序的解释
作者:yuping_zhu
这篇文章主要介绍了Python3中对range()逆序的解释,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
对range()逆序的解释
在 Python3.6 中,range() 函数返回一个可迭代的范围对象,范围类型表示不可变的数字序列,一般用在 for 循环中。
range() 的返回值不是列表,是需要通过转换类型才能变成列表。
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> range(4) range(0, 4) >>> a = range(4) >>> type(a) <class 'range'> >>> b = list(range(4)) >>> b [0, 1, 2, 3] >>> type(b) <class 'list'>
使用方式: range(start, stop[, step]):
start
: 计数从 start 开始。默认是从 0 开始。range(4) 相当于 range(0,4)stop
: 计数到 stop 结束,不包括 stop。range(0,4) 转成 list 后表示 [0, 1, 2, 3]step
:步长,默认为1。range(0,3) 相当于 range(0, 3, 1)
range函数逆序有两种实现方式
1.先创建一个可迭代对象,后对其中的元素进行逆序操作。
a = range(6) # list(a): [0, 1, 2, 3, 4, 5] new = [] for i in reversed(a): new.append(i) print(new) # [5, 4, 3, 2, 1, 0]
2.利用range()函数特点来进行逆序。
new =[] for i in range(5, -1, -1): new.append(i) print(new) # [5, 4, 3, 2, 1, 0]
range(a,b),函数"包前不包后",只包含a,不包含b,默认步长为1。
来看一个比较难的问题
删除某个list里面的重复元素,用sort进行排序,要求从列表list的最后一个元素开始判断
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3] a.sort() last=a[-1] for i in range(len(a)-2,-1,-1): if last==a[i]: del a[i] else: last=a[i] print(a) # [0, 1, 2, 3, 4, 5, 7, 8, 9, 10]
解释:
a = [1, 2, 4, 2, 4, 5, 7, 10, 5, 5, 7, 8, 9, 0, 3] # length : 15 a.sort() print(a) # [0, 1, 2, 2, 3, 4, 4, 5, 5, 5, 7, 7, 8, 9, 10] last = a[-1] print(last) # 最后一个元素是last,最开始时为10 # 从index=13(倒数第2个)(包含)开始,倒着数,到 index=-1 (不含) # 或者说:从下标index=13(含),到index=-1(不含)相当于到index=0(含) for i in range(len(a)-2, -1, -1): if last == a[i]: # 将最后一个元素 分别与 其他元素比较大小 del a[i] # 相同就删掉 else: last = a[i] # 不同就把当前元素赋值传给last print(a)
range的逆序输出
range的逆序输出的两种方式:
1.使用range里的步长参数 step,step为负值即代表反向输出
range(begin, end, step)
range(begin, end, -1) 表示逆序,范围为: [begin, end)
例子如下:
# range(begin, end, 方向) 范围为: [begin, end) 即 [3, 2, 1] for i in range(3, 0, -1): print(i) print('\n') # 范围为 [3, 2, 1, 0] for i in range(3, -1, -1): print(i) #========== 结果 ==========# 3 2 1 3 2 1 0
2.使用reverse直接逆序输出
for i in reversed(range(10)): print(i) """ 输出结果: 9 8 7 6 5 4 3 2 1 0 """
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。