Python学习笔记(三)——迭代

  • 知识点
  1. 迭代
  • 迭代

什么是迭代呢?和递归又有什么区别呢?

根据维基百科和网上的资料:

迭代:迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,

而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

如求1+2+3+4+5的和:

递归呢?指在函数的定义中使用函数自身的方法。也就是函数不停的调用自己直到满足一定条件。

而用递归是怎样求1--5的和呢?

斐波那契数列的递归和迭代实现:

 1 def fib(n):
 2     if n>0:
 3         if (n==1 or n==2):
 4             return 1
 5         else:
 6             return fib(n-1)+fib(n-2)
 7     else:
 8          return -1
 9 def fib_2(n):
10     if n<=0:
11         return -1
12     else:
13         a=1
14         b=1
15         s=1
16         for i in range(n-2):
17             s=a+b
18             a=b
19             b=s
20         return s
21 print fib(int(raw_input(‘Please input a number you want to calculate the fib number:‘)))
22 print fib_2(int(raw_input(‘Please input a number you want to calculate the fib number:‘)))
  • 那Python中哪些是可迭代的呢?

从左往右扫描对象的方式都是可迭代的

如何判断一个对象是不是可迭代的呢?

stackoverflow是这么说的。http://stackoverflow.com/questions/1952464/in-python-how-do-i-determine-if-an-object-is-iterable

  1. 使用Python的内置函数hasattr  ,hasattr(object,name)当object具有name属性时返回真。迭代属性就是__iter__.

2.    使用collections模块的Iterable类型来判断

  • 对于一般的可迭代类型用for in就可以对它们进行迭代操作
  • 但是对于有键值对的字典呢?对于值value则需要itervalues()函数来对值进行操作
1 capitals={‘China‘:‘beijing‘,‘America‘:‘Washington‘,‘Russia‘:‘Moscow‘}
2 print ‘countries:‘
3 for country in capitals:
4     print country
5 print ‘capitals:‘
6 for capital in capitals.itervalues():
7     print capital

  可以看出字典进行迭代操作时,得出的值不一定按顺序。

时间: 2024-10-20 08:02:27

Python学习笔记(三)——迭代的相关文章

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

python学习笔记三---segmaphore信号量学习

# *-* coding=gb2312 *-* ''' 信号量semaphore 是一个变量,控制着对公共资源或者临界区的访问.信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数. 每次有一个线程获得信号量时,计数器-1.若计数器为0,其他线程就停止访问信号量,直到另一个线程释放信号量. ''' import threading import random import time class MyThread(threading.Thread): availableTables=[

Python学习笔记三)

Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)-------------------------------------------- 十.Python标准库 Python标准库是随Pthon附带安装的,包含了大量极其有用的模块. 1. sys模块 sys模块包含系统对应的功能 sys.argv ---包含命令行参数,第一个参数是py的文件名 sys.platform ---返回平台类型 sy

Python 学习笔记三

笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像argv那样 创建脚本小程序 基础的函数用法: #-*- coding:utf-8 -*- def print_two(*args): arg1,arg2=args print "arg1:%s arg2:%s" %(arg1,arg2) def print_two_again(arg1,arg

python学习笔记(三):文件操作和集合

这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 寂寞当然有一点 你不在我身边 总是特别想念你的脸 距离是一份考卷 测量

python学习笔记三之上(基础篇)

深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = 10242048 #n1 = 'hahahaha' #赋值n2 = n1#浅copy n3 = copy.copy(n1) #深copyn4 = copy.deepcopy(n1)print(id(i),id(i1)) #打印内存地址5787536 5787536print(id(i),id(i2))5787536 5787536print(id(i),id(

python学习笔记三之下(基础篇)

文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.python 3.5 把file()删除掉 with open(somefile.txt,'r') as files: do_something(files) with 语句打开文件并把值赋值到变量,之后可以对文件操作.文件在语句结束之后会自动关闭,即使异常引起也会退出. 文件模式 r   #只读模式(默认) w(>) #写模式 a (>>) 

python学习笔记(三) - 高级特性

一. 切片 切片操作和java中的subList类似,就是获取一个子列表 比如L=['zhangsan','lisi','wangwu'] 那么L[0, 2]表示从索引0开始取,直到索引2(不含2), 正好2个元素.如果第一个索引为0, 还可以省略. 下面我们创建一个0-99的数列: L = range(100) 1. 获取前10个数: L[:10] 2. 获取后10个数: L[-10:]    # 倒数第一个元素的索引是-1 3. 获取前11-20个数: L[10:20] 4. 获取前10个数

Python学习笔记三:模块

一:模块 一个模块就是一个py文件,里面定义了一些业务函数.引用模块,可以用import语句导入.导入模块后,通过 模块.函数名(参数)  来使用模块中的函数.如果存在多个同名模块,则前面模块名需要加上包路径. 如果我们只需导入模块中的几个函数,可以用 from 模块名 import 函数名,函数名,..的形式来导入,这样就可以在代码中使用函数名来调用函数,无需路径. 为了避免同名冲突,还可以在导入函数的同时设置别名,from 模块名 import 函数名 as 别名,然后在代码中就可以使用别名