Python中matlab中的for循环环的疑惑?

详解Python中for循环的使用
转载 & & 投稿:goldensun
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下
本系列前面 “” 一文讨论了 if 语句和 while 循环,讨论了复合语句以及适当缩进 Python 语句来指示相关 Python 代码块。该文的结尾介绍了 Python for 循环。但就其使用和功能来说,for 循环更值得关注,所以本文单独讲述该循环。
for 循环有一个简单的语法,使您可以从容器对象中提取单个项目并对其进行某些操作。简单地说,使用 for 循环,可以迭代中对象集合的项目。对象集合可以是任何 Python 容器类型,包括前面文章中讨论的 tuple、string 和 list 类型。但是容器 metaphor 的功能比这三种类型更强大。metaphor 包括其他序列类型,如 dictionary 和 set,将来的文章中将对它们进行讨论。
但是请稍等!还有更多信息:for 循环可以用于迭代支持迭代 metaphor 的任何对象,这使 for 循环非常有用。
清单 1 中显示了 for 循环的基本语法,还演示了如何在 for 循环中使用 continue 和 break 语句。
清单 1. for 循环的伪代码
for item in container:
if conditionA:
# Skip this item
elif conditionB:
# Done with loop
# action to repeat for each item in the container
# action to take once we have finished the loop.
本系列中的第二篇文章 “” 介绍了 Python tuple。如文中所述,tuple 类型是不可变的异构容器。这主要是说 tuple 可以存放不同类型的对象,但是它一旦创建,就无法更改。清单 2 演示了如何使用 for 循环迭代 tuple 的元素。
清单 2. for 循环和 tuple
&&& t = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
&&& count = 0
&&& for num in t:
count += num
print count
&&& count = 0
&&& for num in t:
if num % 2:
count += num
print count
本例首先创建了名为 t 的 tuple,存放整数 0 至 9(包含 9)。第一个 for 循环迭代此 tuple,在 count 变量中累计 tuple 中数值的和。一旦代码已经迭代了 tuple 中的所有元素,它将进入 for 循环的 else 子句,打印 count 变量的值。
清单 2 中显示的第二个 for 循环也迭代 tuple 中的所有元素。但是,它仅累计容器中能够被 2 整除的那些项的值(请记住如果表达式为非零,if 语句将确定为真,num 不能被 2 整除时使用 % 运算符会返回非零值)。此限制通过使用适当的 if 语句和 continue 语句来完成。如前面的文章中所述,continue 语句使包含它的循环开始下一次迭代。实现相同结果的另一种方法是测试 tuple 中的当前项是否是偶数(使用 if not num % 2:),如果为真,那么将当前项添加到运行总和中。一旦代码完成 tuple 中的迭代,将调用 else 子句,打印总和。
本系列中的第三篇文章 “” 讨论了 Python string。string 是不可变的同构容器,这意味着它仅能存放字符且一旦建立将无法修改。清单 3 演示了如何使用 Python string 作为 for 循环的容器。
清单 3. for 循环和 string
&&& st = "Python Is A Great Programming Language!"
&&& for c in st:
P y t h o n
P r o g r a m m i n g
L a n g u a g e !
&&& count = 0
&&& for c in st:
if c in "aeiou":
count += 1
print count
&&& count = 0
&&& for c in st.lower():
if c in "aeiou":
count += 1
print count
本例提供了三个不同的 for 循环,它们都迭代同一 string。第一个 for 循环迭代 string “Python Is A Great Programming Language!” 并一次打印 string 中的一个字符。在此例中,print 语句变量 c 后加了一个逗号。这使 print 语句打印字符值时后面跟着空格字符,而不是换行字符。如果没有后面的逗号,字符将全部打印在单独的行中,会很难读。
下两个 for 循环迭代该字符串并计算其包含多少个元音字母(“a”、“e”、“i”、“o” 或 “u”)。第二个 for 循环在迭代原始 string 时仅查找小写元音字母。第三个 for 循环迭代通过调用 string 对象的 lower 方法返回的临时 string。lower 方法将 string 中的所有字符转换为小写。因此,第三个 for 循环可找到另外两个元音字母。
本系列中的第四篇文章 “” 介绍了 Python list。list 是异构可变容器,这意味着它可以存放不同类型的对象且创建后可以修改。清单 4 演示了如何使用 list 和 for 循环。
清单 4. for 循环和 list
&&& mylist = [1, 1.0, 1.0j, '1', (1,), [1]]
&&& for item in mylist:
print item, "\t", type(item))
&type 'int'&
&type 'float'&
&type 'complex'&
&type 'str'&
&type 'tuple'&
&type 'list'&
既然 list 是很灵活的 Python 容器类型(您将在本系列其余的文章中多次看到它),本例看起来可能过于简单了。但是,这是一部分要点:使用 for 循环使处理容器中的每个项目非常简单,甚至处理包含各种不同对象的 list 也是如此。本例迭代 Python list 中的所有项目,并在单独的行中打印每一项及其相对应的 Python 类型。
迭代和可变容器
Python list 是一个可变序列,提供了一种令人好奇的可能性:for 循环主体可以修改其正在迭代的 list。正如您可能认为的,这样并不好,如果进行此操作,Python 解释器将无法很好地工作,如清单 5 所示。
清单 5. 在 for 循环中修改容器
&&& mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
&&& for item in mylist:
if item % 2:
mylist.insert(0, 100)
^CTraceback (most recent call last):
File "&stdin&", line 3, in ?
KeyboardInterrupt
&&& print mylist
[100, ...., 100, 100, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Many lines deleted for clarity
&&& mylist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
&&& for item in mylist[:]:
if item % 2:
mylist.insert(0, 100)
&&& print mylist
[100, 100, 100, 100, 100, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
本例中的第一个 for 循环只要在原始 list 中发现奇数,它就在 list 的开始插入数值 100。当然,这是一种演示此问题的不同寻常的方式,但却非常好。一旦在三个点的 Python 提示后按 Enter 键,Python 解释器就处于无限循环的混乱中。要停止这种混乱,必须通过按 Ctrl-C(其在 Python 输出中显示为 ^C)来中断进程,然后会出现 KeyboardInterrupt 异常。如果打印出修改的 list,将看到 mylist 现在包含大量的值为 100 的元素(新元素的准确数量取决于您中断循环的速度)。
本例中的第二个 for 循环演示了如何避免此问题。使用切片运算符创建原始 list 的副本。现在 for 循环将迭代该副本,而对原始 list 进行修改。最终的结果是修改后的原始 list,它现在以五个值为 100 的新元素开始。
for 循环和序列索引
如果您用过其他编程语言,Python for 循环可能看起来有点儿古怪。您可能认为它更像 foreach 循环。基于 C 的编程语言具有 for 循环,但它的设计目的是对一系列操作执行特定次数。Python for 循环可以通过使用内置的 range 和 xrange 方法来模拟该行为。清单 6 中演示了这两种方法。
清单 6. range 和 xrange 方法
&&& r = range(10)
&&& print r
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
&&& type(r)
&type 'list'&
&&& xr = xrange(10)
&&& print xr
xrange(10)
&&& type(xr)
&type 'xrange'&
本例首先演示了 range 方法,它创建一个包含一系列整数的新 list。调用 range 方法的一般形式是提供单个值,用作整数 list 的上限。零为起始值。因此,调用 range(10) 将创建包含整数 0 至 9(包含 9)的 list。range 方法接受起始索引以及步长。所以,调用 range(11,20) 将创建从 11 至 19(包含 19)的整数 list,而调用 range(12, 89, 2) 将创建从 12 至 88 的偶数 list。
由于 xrange 方法也创建整数 list(其使用相同参数),所以它与 range 方法非常相似。但是,xrange 方法仅在需要时才在 list 中创建整数。例如,在清单 6 中,尝试打印出新创建的 xrange 时除了 xrange 的名称,不会显示任何数据。当需要迭代大量整数时,xrange 方法更适用,因为它不会创建极大的 list,那样会消耗大量计算机内存。
清单 7 演示了如何在 for 循环内使用 range 方法来创建整数 1 至 10(包含 10)的乘法表。
清单 7. 创建乘法表
&&& for row in range(1, 11):
for col in range(1, 11):
print "%3d " % (row * col),
本例使用两个 for 循环,外面的 for 循环关注乘法表中的每一行,嵌套的 for 循环关注每行内的列。每个循环都迭代包含整数 1 至 10(包含 10)的 list。最里面的 print 语句使用了一个名为 字符串格式化 的新概念来创建格式设置精美的表。字符串格式化是一种非常有用的技术,用于以格式设置精美的布局创建由不同数据类型组成的 string。现在详细信息并不重要,将来的文章中将讲述这些内容(了解 C 编程语言的 printf 方法的任何人都会很熟悉这些内容)。在本例中,字符串格式化指定将从整数创建新 string 且需要保留三个字符来存放该整数(如果该整数小于三个字符,将在左边用空格填补,从而使数据排列整齐)。第二个 print 语句用于打印新行,从而使乘法表中的下一行被打印在新的行中。
range 方法还可用于迭代容器,通过使用适当的索引访问序列中的每一项。要进行此操作,需要包含容器的允许范围索引值的整数 list,这可以通过使用 range 方法和 len 方法来轻松实现,如清单 8 所示。
清单 8. 在 for 循环内索引容器
&&& st = "Python Is A Great Programming Language!"
&&& for index in range(len(st)):
print st[index],
P y t h o n
P r o g r a m m i n g
L a n g u a g e !
&&& for item in st.split(' '):
print item, len(item)
Programming 11
Language! 9
这个最后的示例演示了如何使用 len 方法作为 range 方法的参数,创建可用于单独访问 string 中每个字符的整数 list。第二个 for 循环还显示了如何将 string 分割为子字符串的 list(使用空格字符来指示子字符串的边界)。for 循环迭代子字符串 list,打印每个子字符串及其长度。
本文讨论了 Python for 循环并演示了它的一些使用方式。可以将 for 循环与提供迭代器的任何 Python 对象结合使用,这些对象包括 tuple、string 和 list 等内置序列类型。for 循环和 list 序列一起使用时具有强大的功能,您会发现自己在许多情况中都要使用它们。Python 提供了用于组合这两个概念的简单机制,称为列表理解,将来的文章中将讲述该内容。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
请大家帮忙看下这个问题。
girls=['alice','ber','clar']
boys=['chirs','arnold','bob']
lettergirls={}
for girl in girls:
& & print girl
& & lettergirls.setdefault(girl[0],[]).append(girl)&&//此句有疑惑
print lettergirls
1.&&lettergirls.setdefault(girl[0],[]).append(girl)&&//此句有疑惑,不是说append不能用于字典么,为什么在这里可以用?
2. 如果该条语句改成&&lettergirls.setdefault(girl[0]).append(girl) ,把setdefault中的[]去掉,会报错AttributeError: 'NoneType' object has no attribute 'append'
请帮忙,谢谢!
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
怎么只有查看的没有回复的?哪位大仙赐教下嘛
富足长乐, 积分 6112, 距离下一级还需 1888 积分
论坛徽章:52
lettergirls 是字典
setdefault 是lettergirls 的方法, help(dict.setdefault) 可知:
setdefault(...)
& && &D.setdefault(k[,d]) -& D.get(k,d), also set D[k]=d if k not in D
你这里的 d 设定为 列表, 所以 lettergirls.setdefault(girl[0],[]) 返回的对象是列表, 列表有 append 方法. so .....
腰缠万贯, 积分 8618, 距离下一级还需 1382 积分
论坛徽章:26
把setdefault中的[]去掉,
dict.setdefault(key, default=None)
返回的对象是None, None没有 append 方法.
dir(None) 可知:
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
是我经验太少,楼上两位说得很清楚,谢谢大家。
顺便又看了一遍setdefault方法的使用:
setdefault(key[, default])
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.
腰缠万贯, 积分 8618, 距离下一级还需 1382 积分
论坛徽章:26
python_love
LZ&&[评分] + 20&&我&&
白手起家, 积分 10, 距离下一级还需 190 积分
论坛徽章:0
昨天刚注册的,积分才8分,先欠着哈
腰缠万贯, 积分 8618, 距离下一级还需 1382 积分
论坛徽章:26
python_love
LZ&&[评分] 不会减少积分的
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处Python中for循环是怎么工作的
对于一个初学者来说for循环可能会击溃很多人,因为网上找的python基础课程的for循环没有详细的介绍for循环的条件以及for循环后面定义的东西是什么意思。首先我先举一个常用的例子。
for i in range(1,10) :
上面这两条代码是用来在屏幕上打印1到9的。这里就不对range这个函数进行介绍了,大家可以去百度查一下。或者我之后的文章会介绍。
这里i是自己定义的一个变量in后面的range(1,10)是条件。这个循环从开始执行到执行结束的的走法是首先range内的东西给i赋值上然后走进循环打印出i被赋值的东西打印完成之后回到for查看是否循环完毕没有循环完毕则将range生成的第二个数字往i上面赋值然后继续打印这样一直循环到range不在生成数字了。在来另外一条网上用的多的。接下来分享一个python教程,有什么不懂的可以加我视频中的联系方式和我交流,还可以获取老师一对一指导。
for i in 'hello,world':
这行代码会把hello,world一个一个打印到屏幕上面。还是那样for后面先定义一个i变量在把hello,world这串字符串里面的字符一个一个的赋值到i上运行的时候在通过print打印到屏幕上。关于python的for循环就到这里这里只是一个小结。以后还会讲到更多的关于for循环的知识。
也欢迎大家在评论区指出不足的地方。我会慢慢改进的,想要了解更多请加入享学课堂
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
自媒体vip学习交流群,能赚钱才是硬道理,每天实战干货分享。欢迎各大自媒体加入。
本群每天直播分享web前端开发,web前端设计,欢迎前端爱好者加入交流学习。
今日搜狐热点博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Python for 循环语句_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Python for 循环语句
W3Cschool(www.w3cschool.cn)最大的技术知...|
总评分0.0|
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 js中for循环 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信