python 列表循环中如何同时循环两个列表

第二课 Python中的分支循环、逻辑运算和关系运算
第二课 条件判断和循环的单例
& & & &考虑以后的应用和语法查询的方便,在这节课还是将程序流程以及涉及的运算以单独而简单案例的形式展现一下。学习的方法是阅读程序,尽量修改一下,下节课就比较复杂了。对程序流程而言,只有三种结构:顺序、分支、循环,无论多复杂的程序也是这三种结构的排列和综合。
本次课程中案例所涉及的内容包括: & & &&
1、三种条件语句
执行语句块a
2)&&if 条件:
执行语句块a
执行语句块b
3)& if 条件:
执行语句块a
elif 另一个条件:
执行语句块b
执行语句块c
2、Python中真假的表达
3、两种循环
1)for in循环
2)while 循环
4、生成序列的range 函数
5、没有 do while怎么办
6、关系运算和逻辑运算
7、continue和break
Python的条件判断也使用“if”这个关键字,并且比较直观,例如:
&&& print 'a='+`a`+' is max number'
print 'over'
根据Python的规则,如果if语句判断是True,就把缩进的语句执行了,否则,什么也不做,首先注意if的条件判断如果是True,那么只运行if后面那层缩进的语句,而不管这个缩进有多少句,而一旦缩进取消,则不管条件如何都会执行,例如上例的print‘over’;其次注意if条件的后面有一个“:”冒号。
也可以给if添加一个else语句,这样可以表达,如果条件为True执行A,否则执行B
&&& print 'a='+`a`+' is max number'
&&& print 'b='+`b`+' is max number'
print 'over'
注意if的条件和else后面都有冒号:。
如果有多重条件的判断,Python提供了elif这个关键字,代替了其它语言的elseif,只是简写一下,没其他意思。例如下面的程序:
a=input('pls inputa: ')
b=input('pls inputb: ')
&&& print 'a='+`a`+' is max number'
elif &b&a:
&&& print 'b='+`b`+' is max number'
&&& print 'equal'
print 'over'
所以if语句的完整形式就是:
if &条件判断1&:
&&& &执行1&
elif &条件判断2&:
&&& &执行2&
elif &条件判断3&:
&&& &执行3&
&&& &执行4&
除了if以外,其他都可以省略,if语句从上至下执行,如果在某个判断上是True,则会忽略掉剩下的elif和else。
真假的表达&
Python中什么是True(真)呢,Python中的真包括:非零数值、非空字符串、非空list、元组等非空集合(集合以后再说)。0,空字符串、空集合为False(假)。
所以判断a不为0可以这样写:
&& print “a is not 0”
Python支持两种循环,一种是for...in循环,另一种是传统的while,请看例子:
我们想计算1-10的整数之和,可以用一个sum变量做累加:
for x in [1, 2, 3, 4, 5, 6,7, 8, 9, 10]:
&&& sum = sum + x
这比较好理解,x依次取集合中1到10([1,2,3,4,5,6,7,8,9,10]在数学中也是集合的含义)的数值,然后用sum累加(sum=sum + x的含义是新的sum的值为sum的当前值加x)
但是要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数集合的序列, range(N)生成的序列是从0开始小于N的整数:
例如 range(15)会产生0到14一共15个整数。
那么range(101)就可以生成0-100的整数序列,求100以内的整数和可以编程如下:
for x in range(101):
&&& sum = sum + x
第二种循环是著名的和传统的while循环,也叫“当型循环”,即只要(当)条件满足(条件为True或非0),就不断循环,条件不满足(条件为Flase或 为0时)时退出循环。再次用while来编程计算100以内所有整数之和:
while i & 101 :
&&& sum = sum + i
&&& i+=1
Python 用for in取代了传统的for,那是为了使用“迭代”统一了“遍历集合”的方法,省得像我这种老顽固老习惯用index这种东西。
没有 do while
我看了许多人抱怨Python为什么没有dowhile语句了,呵呵, 其实do while本来就可以用while代替,当初C语言创造它就是为了少做一次输入或赋值而已。
例如下面这个求所有输入整数的累加和直至输入-1退出的例程:
&关系运算符和逻辑运算符
最后说一下关系运算符和逻辑运算符
首先说破个秘密,就是运算优先级实际上不太用考虑,关系运算符总是比逻辑运算符优先级高(除了C语言中的!),其原因就是大家懒得写括号。
例如a大于100或a小于10可以写作:a&100or a&10,你看根本不用考虑括号问题。一般情况下总是如此,当然复杂的运算还是要注意一些优先级。&
简单说一下关系运算
&,&,&=,&=,==,!=,依次是大于,小于,大于等于,小于等于,比较两数相等(为True),比较两数不等(为True),简单吧
至于逻辑运算,也就是与、或、非三种:and、or、not 必须小写,每个一句话,不用考虑什么真值表啥的。我给出一个表达式样例并给出一句话解释
“与 运算样例”:a and b : &a,b中一个为假,运算结果为假
“或 运算样例”:a or b : &a,b中一个为真,运算结果为真
“非 运算样例”:!a&:结果与a相反
&当前学过的运算符按优先级排列:算术运算符 & &关系运算符 & &逻辑运算符
下面锻炼一下脑子:4种判断n是奇数的方法
1: if &n%2!=0:
&&&&&& print ‘odd’
2:& if not(n%2==0):
&&&&&& print ‘odd’
3: if n%2==1:
&&&&&& print ‘odd’
4:& if n%2:
&&&&&& print ‘odd’
&break 和 continue
最后要说的是break和continue这两个关键字用来中断循环,break用来中断本层循环,continue只用来中断本次循环。
我总是觉得话说不清,脑子也想不清,学习的另一个捷径就是把别人说的话用另外的方法说出来,还的让别人理解,那就是学会了,学编程也是如此。所以本次课的所有程序都没有注释,自己读读,懂了,能说出来,就是会了。
下面的程序是:输入一个数n,求它的所有因子的和,我们考虑,最大因数是n/2取整,所以程序如下:
n=input(&pls input n : &)
for i in range(1,n):
& & if i&n/2:
&&&&&& break & & &
&&& ifn%i== 0:
&&&&&& print'i= '+`i`
&&&&&& sum+=i
&&&&&& continue & & &
print 'sum = '+ `sum`
range 函数产生序列
其中range(1,n)是产生1到n-1的整数集合。
那么range函数的两种用法:
range(n)产生 0 到 n-1 的序列
range(m,n)产生 m 到 n-1的序列
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
python如何同时进行两个循环?比如说a要这样循环1,2,3,4,5.26,b要这样循环a,b,c,d,...z要同时进行,应该怎么用for来写?
a,b各存入一个LIST中,放在一个for里循环下面是输出1a,2b,3c...26z的例子a =[chr(i) for i in range(97,123)]b =[ i for i in range(1,27)]c = []for i in range(26):
c.append(str(b[i]) + a[i])print c
为您推荐:
扫描下载二维码下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
python中两个for循环的问题比如这个句子怎么理解呢?f=open('hhga.txt','r')len([word for line in f for word in line.split()])这里是在讲怎么求一段文本中非空白字符的数目,然后就举了这样一个例子。在这里的两个for到底是怎么在运行的啊
这一段效果和下面这个代码块是一样的。temp&=&[]for&line&in&f:&&&&for&word&in&line.split():&&&&&&&&temp.append(word)print&len(temp)我不知道你是在什么地方看到这样的例子的,但你没必要再看了。把简单的东西复杂化一点也不高大上。而且这段代码也实现不了求文本中非空白字符数目的功能。line='&hello'或者'hello&'或者'he&llo'这三种情况都得不到正确结果。
就是那本python核心编程里面。。。。我还有个问题就是for line in f的这个句子得到的line似乎是每一个字符是么?比如f='hello word'这样得到的line是'h','e','l'这样一个一个的字符?我试了一下好像是这样的诶。那这样的话,下面的line,split()怎么继续呢?这里我也不是太明白。。
f= open('123.txt')source = f.readlines()for line in source:line表示文件中的一行,你编辑文件时每敲一次回车就换一次行,换行字符是'\n',f.readlines()就是把文件对象f中的所有行读取到一个列表里。比如文件123.txt的内容是:hello world!what's your name?thank you.那么通过f.readlines()会返回列表['hello world!\n', 'what's your name?\n', 'thank you.\n'],列表里的项就是你说的line。for line in f: 本身的字面意思就是从一个文件对象(f)里读取每一行(line),写代码的时候要让代码的字面意思和实际作用相符合。如果f='hello world',那就应该这样写:for character in f:表示依次遍历字符串对象的每一个字符(character)。这样的代码风格叫做coding as talking。
我的意思是这样的,就是line在这里面只是我自己命名的一个变量,然后我用for line in f:
print line这样去写,得到的却是一个个字符,每一个字符都换行了。这里我想问的是,系统按照这样去写得到的不应该也一样是一个个字符而不是一行一行的么?
你在123.txt添加如下内容:hello world!然后f = open('123.txt'),f是一个文件对象,并不是你认为的f = 'hello world!'。首先你要明白这一点。for line in f: 是对文件对象f进行遍历,每次返回一个以'\n'结尾的字符串,也即文件里的一行。如果你直接对f进行赋值f='hello world!',那f是一个字符串,对它进行遍历就是依次返回单个字符,跟换行没有任何关系。
为您推荐:
第一行,以 'r ' 即读的方式去打开那个.txt文件。第二行,逐行读的同时,将行分片,然后将分片结果(即非空字符穿)读取装入一个列表,最后求列表的长度。对于第二行的理解:不知道你有没有看过类似这样的语句 [element for element in a_list if element.isupper()], 首先我们假设a_list中存储的都是字符串,那么这句的作...
扫描下载二维码

我要回帖

更多关于 python 列表循环赋值 的文章

 

随机推荐