Python从题目中学习:range()和xrange()
近期给公司培训Python,好好啃了啃书本,查了查资料,总结一些知识点。
------------------------------------------------------------------------------------
①:首先引入课后布置给同学们的作业吧,打印99乘法表:
Print below multiplication table: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81-------------------------------------------------------------------------------------
当然主要是考察大家是不是会用range()和循环。
先学range():
>>> range(1,10)# #表示从1到10(不包含10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1,10,2)#表示从1到10,步长为2(不包含10)
[1, 3, 5, 7, 9]
>>> range(10)#代表从0到10,不包含10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range()会了就比较简单了,两层循环就可以了。
for firstNum in range(1,10):
resultLine = ""
for secondNum in range(1,firstNum+1):
resultLine = resultLine+str(secondNum)+"*"+str(firstNum)+"="+str(firstNum*secondNum)+" "
print resultLine #结果如下:
#1*1=1
#1*2=2 2*2=4
#1*3=3 2*3=6 3*3=9
#1*4=4 2*4=8 3*4=12 4*4=16
#1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
#1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
#1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
#1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
#1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
--------------------------------------------------------------------------------------
②:接下来,说说xrange()吧。
range()和xrange()这两个基本上都是在循环的时候用。
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> xrange(10)
xrange(10) #查看类型
>>> a = range(10)
>>> b = xrange(10)
>>> type(a)#range()生成的是一个List
<type 'list'>
>>> type(b)#xrange()则不会生成一个List
<type 'xrange'>
从上面可以看出,range()生成的是一个List,而xrange()不会生成一个List。
>>> for i in range(1,10):
print i >>> for i in xrange(1,10):
print i #两种方式,输出结果一样
1
2
3
4
5
6
7
8
9
-----------------------------
#range
>>> a = range(10)
>>> a[0],a[3]
(0, 3)
>>> a[0]
0
>>> a[3]
3
#xrange
>>> b = xrange(10)
>>> a[0],a[3]
(0, 3)
>>> b[0]
0
>>> b[3]
3
上面这两个输出的结果是一样的,但是实际上是有不同的。
range会直接生成一个list对象;
xrange则不会直接生成一个list,而是每次调用就返回其中的一个值。
可以得出xrange做循环时,性能比range要好,特别是循环很大的时候。
所以尽量用xrange可以提升性能,除非你是要返回一个列表。
-----------------------------------------------------------------------------------
③:如果题目变一下呢?反向输出99乘法表。
Print below multiplication table:
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*4=4 2*4=8 3*4=12 4*4=16
1*3=3 2*3=6 3*3=9
1*2=2 2*2=4
1*1=1
--------------------------------------------------------------------------------------
乍一看不知道如何下手,其实range()也可以反向输出:
>>> range(9,0,1) #返回空列表
[]
>>> range(9,0,-1) #返回1-9元素的列表
[9, 8, 7, 6, 5, 4, 3, 2, 1]
那么题目就很简单了:
for firstNum in range(9,0,-1):
resultLine = ""
for secondNum in range(1,firstNum+1):
resultLine+="%d*%d=%d"%(secondNum,firstNum,firstNum*secondNum)+" "
print resultLine #
#1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
#1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
#1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
#1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
#1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
#1*4=4 2*4=8 3*4=12 4*4=16
#1*3=3 2*3=6 3*3=9
#1*2=2 2*2=4
#1*1=1
转载请注明出处,谢谢。
Python从题目中学习:range()和xrange()的更多相关文章
- Python从题目中学习:List comprehension
九九乘法表作业其实有更简单的做法,就是用列表推导式. ------------------------------------------------------------------------- ...
- Python从题目中学习:random() module
最近在给公司培训Python,布置了一道题: ----------------------------------------------------------------------------- ...
- Python中的range和xrange区别
range 函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. range示例: >>> r ...
- python中的range与xrange
range 也是一种类型(type),它是一个数字的序列(s sequence of numbers),而且是不可变的,通常用在for循环中. class range(stop) class rang ...
- python开发_python中的range()函数
python中的range()函数的功能hen强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence o ...
- 实验比较python中的range和xrange
1 结论: 全用xrange,除非你需要使用返回的列表 2 实验一:性能对比 实验环境:win7 ,64位系统 python2.7 import time StartTime=time.time() ...
- python(47):range和xrange的区别和联系
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. 比如: >>> range(5)[0, 1, 2, ...
- 从题目中学习java语法
一.输入输出 1.输入圆的半径,计算并输出圆的周长和面积: import java.util.Scanner; public class zuoye01_circle { public static ...
- python的基本知识,range在python2.x中和python3.x中的区别
这些是最开始学习python时的笔记,今天整理一下,在这里记录一下. 各种基础代码解释 for key,item in enumerate(li): print(key,item) inp=input ...
随机推荐
- Adaboost 2
本文不定期更新.原创文章,转载请注明出处,谢谢. Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类 ...
- In close() at SocketHttpClientConnection in Android
In close() at SocketHttpClientConnection Error In Android. when i tried to acess network data on Mai ...
- Python的平凡之路(6)
一.面向对象编程介绍 1 编程范式: 编程范式(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式.随着编程方法学和软件工程研究的深入,特别是OO ...
- TCP三次握手及四次挥手详细图解
TCP三次握手及四次挥手详细图解 Andrew Huangbluedrum@163.com 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不 ...
- mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?
不严谨地讲,Redis定位在"快",HBase定位于"大",mongodb定位在"灵活". NoSQL的优点正好就是SQL的软肋,而其弱 ...
- Android Studio Exception汇总
Android Studio 运行时出现 finished with non-zero exit value 2 错误分析 原因: 项目包含了两个相同包名的不同 project 或者 jar 举例: ...
- LeetCode 【235. Lowest Common Ancestor of a Binary Search Tree】
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- C#常见控件命名规则举例
控件 缩写 举例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calendar ca ...
- VISIBLE、INVISIBLE、GONE的区别
VISIBLE:设置控件可见 INVISIBLE:设置控件不可见 GONE:设置控件隐藏 而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了v ...
- JS特殊函数(Function()构造函数、函数直接量)区别介绍
函数定义 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 函数的构造语法有这三种: 1.function functionName(arg0, ...