python中的range与xrange
Python range
2023-09-14 08:57:48 时间
range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中。
class range(stop) class range(start, stop [, step])
对于第一种构造方式,start默认值为0,step默认值为1。
当step为正时,一个range的元素值为r[i] = start + i * step 且 r[i] < stop; step为负时,r[i] > stop。
>>> range(6) [0, 1, 2, 3, 4, 5] >>> tuple(range(0,-10,-2)) (0, -2, -4, -6, -8) >>>
使用python的人都知道range()函数很方便,下面再介绍一些用法。
>>> range(1,5) #代表从1到5(不包含5) [1, 2, 3, 4] >>> range(1,5,2) #代表从1到5,间隔2(不包含5) [1, 3] >>> range(5) #代表从0到5(不包含5) [0, 1, 2, 3, 4]
再回顾一下,看看list的操作:
array = [1, 2, 5, 3, 6, 8, 4] #其实这里的顺序标识是 [1, 2, 5, 3, 6, 8, 4] (0,1,2,3,4,5,6) (-7,-6,-5,-4,-3,-2,-1) >>> array[0:] #列出0以后的 [1, 2, 5, 3, 6, 8, 4] >>> array[1:] #列出1以后的 [2, 5, 3, 6, 8, 4] >>> array[:-1] #列出-1之前的 [1, 2, 5, 3, 6, 8] >>> array[3:-3] #列出3到-3之间的 [3]
那么两个[::]会是什么样子呢?
>>> array[::2] [1, 5, 6, 4] >>> array[2::] [5, 3, 6, 8, 4] >>> array[::3] [1, 3, 4] >>> array[::4] [1, 6] 如果想让他们颠倒形成reverse函数的效果 >>> array[::-1] [4, 8, 6, 3, 5, 2, 1] >>> array[::-2] [4, 6, 5, 1]
差不多了解的话,再试图了解用 Python 实现冒泡排序吧(循环):
array = [1, 2, 5, 3, 6, 8, 4] for i in range(len(array) - 1, 0, -1): print i for j in range(0, i): print j if array[j] > array[j + 1]: array[j], array[j + 1] = array[j + 1], array[j] print array
- line 1:array = [1, 2, 5, 3, 6, 8, 4]一个乱序的list没什么好解释的
- line 2:for i in range(len(array) - 1, 0, -1):这就是上边给的例子的第二条,我们替换下就成为range(6,1,-1),意思是从6到1间隔-1,也就是倒序的range(2,7,1),随后把这些值循环赋给i,那么i的值将会是[6, 5, 4, 3, 2]
- line 3:for j in range(0, i):这是一个循环赋值给j,j的值将会是[0, 1, 2, 3, 4, 5][0, 1, 2, 3, 4][0, 1, 2, 3][0, 1, 2][0, 1]
- 那么上边两个循环嵌套起来将会是
i----6 j----0,j----1,j----2,j----3,j----4,j----5 i----5 j----0,j----1,j----2,j----3,j----4 i----4 j----0,j----1,j----2,j----3 i----3 j----0,j----1,j----2 i----2 j----0,j----1
- line 4:if array[j] > array[j + 1]:
>>> array = [1, 2, 5, 3, 6, 8, 4] >>> array[0] 1 >>> array[1] 2 >>> array[2] 5 >>> array[3] 3 >>> array[4] 6 >>> array[5] 8 >>> array[6] 4
其实就是使用这个把这个没有顺序的array = [1, 2, 5, 3, 6, 8, 4]排序。
- line 5:array[j], array[j + 1] = array[j + 1], array[j] 替换赋值
- line 6:打印出来
相关文章
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
- Python程序 #!/usr/bin/python 的解释
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- Python备份目录及目录下的全部内容
- 终于学到PYTHON的类啦~~
- Open3D 点云快速欧式聚类(python详细过程版)
- python程序员都在用到5个酷毙的Python工具
- Python:利用python语言实现18位身份证号码和15位身份证号码相互转换
- Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化
- Python编程语言学习:python中浅复制/深复制(或浅拷贝/深拷贝)的简介、案例应用注意事项之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Canvas)
- 来看几段代码,测测你是 Python 菜鸟还是老鸟
- 〖Python接口自动化测试实战篇⑧〗- 小案例 - 使用python实现接口请求 [查询天行数据]
- Python学习19:递归函数
- 【华为机试真题 Python实现】检查是否存在满足条件的数字组合
- Python编程:pandas读写mysql数据
- python 数据结构 元组、列表、字典、序列
- Python kafka操作实例(kafka-python)
- 基于改进粒子群优化算法的柔性车间调度问题(Python代码实现)
- Python中pd.to_datetime、groupby、range(len())
- 【Python实战】 ---- python 自带的 venv 虚拟环境更新 pip 失败