扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
in是包含关键词,会返回一个bool函数(True或者False)。
成都创新互联是一家专业的成都网站建设公司,我们专注成都网站设计、成都网站建设、外贸网站建设、网络营销、企业网站建设,卖友情链接,广告投放平台为企业客户提供一站式建站解决方案,能带给客户新的互联网理念。从网站结构的规划UI设计到用户体验提高,创新互联力求做到尽善尽美。
用法:a in b,表示判断a是否在b其中,如果存在则返回True,否则返回False。
例:
for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项。在后面的章节,我们将会看到更多关于序列的细节。现在,你需要知道的是一个序列只是一个有序的项目的集合。
例如 (保存为 for.py):
for i in range(1, 5):
print(i)
else:
print('for循环结束')
输出:
1
2
3
4
for循环结束
它是如何工作的:
打印一个数字序列。我们使用内置的range函数生成这个数字序列。
我们在这里所做的是提供两个数字,range返回一个从第一个数字到第二个数字的一个数字序列。例如,range(1,5)给出序列[1, 2, 3, 4]。默认情况下,range 步距取为1。如果我们提供第三个数字,range那么它变成了步距。例如range(1,5,2)得到[1,3]。请记住,范围扩展到第二号码,即它不包括第二个数字。
注意,range()生成一个数字序列,当for循环请求下一个项目时,它一次只生成一个数字。如果你想立刻看到完整的数字序列,使用list(range())。list(列表)将在[数据结构章]中解释。
for循环然后遍历这个范围,for i in range(1,5)相当于 for i in [1, 2, 3, 4],这就像把序列中的每一个数(或对象)分配给i,一次一个,然后为每个i值执行该语句块。在本例中,在语句块中我们只是打印它的值。
记住,else部分是可选的。当包括它时,除非遇到[break][#中断)语句,当for循环结束时,它执行一次。
记住,for..in循环可以作用于任何序列。在这里,我们对一个由内建的range函数生成的一个数字列表,但是一般来说,我们可以使用任何种类对象的任何类型的序列!在后面的章节,我们将详细探讨这个想法。
C/C++/Java/C#程序要注意:
Python的for循环完全不同于C/c++的for循环。c#程序员会注意到,在Python中for循环类似于c中的foreach循环c#。Java程序员会注意到,同样类似于在Java 1.5中的to for (int i : IntArray)。
在C/c++中,如果你想写for (int i = 0; i 5; i++),那么在Python中你只要写 for i in range(0,5)。正如您可以看到的,在Python中for循环更简单,更富有表现力且不易出错。
内置函数,在python帮助文档中:Build-in Functions
在Python提示符下,输入下面语句,就会显示Python提供的内置函数列表
dir('__builtins__')
abs(_) 内置函数,绝对值或复数的模。
chr() 以单字节整数为参数,返回一个单字符的字符串,其内容是与之对于的ASCII字符。如chr(69)返回'E'。
cmp() 比较字符串,cmp('Xiao','Jian')返回1
coerce() (可以看成一个数值类型转换函数)有两个参数,都是数字,返回这两个数字的一个列表,将这两个数字的数据类型统一。如coerce(1,2j),返回(1+0j,2j)
complex() 内置函数,把……转换成复数,如complex('2')返回(2+0j),complex('2+3j')返回(2+3j)。
divmod() 内置函数,有两个参数,返回(商,余数)。如divmod(10,2.5),返回(4.0,0.0)。
filter(function,list) 把函数应用于list中的每一项,并返回 从函数中返回真值的项。注:function可以为None,此时删除list中的0或空项。
float() 内置函数,把……转换成浮点数。
floor() 在math模块内,需要import math。向下取整,即向x轴负方向取整。如math.floor(1.9)返回1,math.floor(-2.5)返回-3。
hash() 散列功能,词典键的最精确功能需求是它一定是可散列的。对象的散列值是半唯一的、内部生成的数字,它可用于快速比较。
int() 内置函数,把字符串或者小数转换为一个整数。直接去掉小数部分。如int(5.3)返回5,int('5')返回5。
len(x) 序列x的长度
long() 内置函数,把数字 或 代表整数的字符串 转换成长整型
map(function,list[,list,...])
max() 找出字符串中最大的字符。如:min('find the minimum character'),返回' ',即空格。
min() 找出字符串中最小的字符。如:max('find the maximum character'),返回'x'。
oct() 将十进制数转换成八进制,再变成字符。
ord() 参数是单个的ASCII字符,返回该ASCII字符对应的整数值,如ord('a')返回97。
pow() 内置函数,乘方。如果有第三个参数,则表示乘方的结果对第三参数取余,如pow(2,3)返回8,pow(2,3,4)返回0。
print 输出到窗口
range() 生成一个向量,例如range(m,n,d),从m到n,步长为d;range(m)则生成0:m-1,步长为1的向量。
raw_input() 输入函数,参数为字符串,作为输入时的提示语句。返回值为字符串。
reduce(func)
round() 内置函数,对数字进行四舍五入,第二个参数表示精确到小数点后指定的位数,默认值为0。如round(2.4)返回2,round(1.398,2)返回1.40。
type() 返回某数据的类型
我很理解你的疑惑,我相信这个对任何一个第一次接触到这种写法的人都有疑惑,不过我已经明白它的执行顺序,其实最容易明白的就是写一个等效写法,“a in b for b in c”的写法跟“x for x in y”的写法并没有本质上的区别,只不过前者输出的b又作为“in”的参数继续运算一次而已(同理它还可以是其它运算,未必是a in b,只不过现在它是一个列表,如果c是一维的列表,那循环一次出来的b就是单个元素,假设它是数字,那就可以执行比如b+1 for b in c这种操作),这种一般都用于生成一个列表,说再多不如举个例子(以下例子皆为实测通过):
```
# 二维数组(在python中这个叫列表)
c = [[7, 8, 9], [1, 2, 3], [4, 5, 6]]
# 简易写法,结果: [7, 8, 9, 1, 2, 3, 4, 5, 6]
l1 = [a for b in c for a in b]
print(l1)
# 常规写法(相当于上边的简易写法),结果: [7, 8, 9, 1, 2, 3, 4, 5, 6]
l2 = []
for b in c:
for a in b:
l2.append(a)
print(l2)
# 上述的a还可以作为参数继续传入其它函数或在表达式中使用,比如作为in的参数,结果: [False, True, False]
# 解释一下执行顺序:先执行for in,循环一次就出来一个b,然后再执行num in b,num in b的结果(True/False)作为列表的
# 一个元素,至此一个循环结束,然后又开始下一个for in循环,直到所有元素循环完,最后产生一个元素值为True/False组成的列表!
num = 3
l3 = [num in b for b in c]
print(l3)
# 上面写法相当于
l4 = []
for b in c:
l4.append(num in b)
print(l4)
# a在表达式中参与表达式运算
# 结果:[8, 9, 10, 2, 3, 4, 5, 6, 7]
l5 = [a+1 for b in c for a in b]
print(l5)
# 该写法是上述写法的常规写法
l6 = []
for b in c:
for a in b:
l6.append(a+1)
print(l6)
```
提交答案后,发现百度会把空格缩进全都去掉,而缩进作为python的灵魂,没有了缩进的python代码根本没办法运行,所以我给你截个图,你复制代码后自己去缩进吧:
python的一种写法:a in b for b in c
又一次修改答案,这次我要吐槽一下,不要来这里问关于代码的问题,前面的代码你也看到了,百度知道根本无法嵌入代码,直接把代码当普通文本,空格缩进全给你去掉,然后我想着,好,文本的空格被你去掉我上传图片总行了吧?结果,这图片被压缩的模糊不清,勉强能看见,将就着看吧。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流