循环与布尔值

来源:互联网 发布:杭州圆周率网络 编辑:程序博客网 时间:2024/04/30 23:13

基础

        代码块以冒号开始,并且缩进相同的代码属于同一代码块。因此,if等表达式后需要跟一个冒号。

逻辑运算

        True:真。非零与非空的变量都是真。

        False:假。0、None或者空的量都是False。如

a={"dict":1}a.clear()if a:        print(a)else:        print("else")

        如果将a.clear()不注释掉,则输出的是else,也就是说if a的判断为False。如果注释则if a:就是True。

        and:与。

        or:或。

        not:非。

if

        与别的语言中的if表达式完全一致,除了判断语句后面需要跟一个冒号外。

        elif:等同于java中else if。

for

        for xx in xxxx:——for与in关键字结合。

        结合着字典的items()方法,可以通过一个for循环将它的Key,value都取出来。如下:

>>> a={"aba":1213,"cfe":4324}>>> for k,v in a.items():...     print(k)...     print(v)... aba1213cfe4324
        这是因为a.items()返回的是一个列表,其中的元素又都是一个元组。for循环首先取出列表中的每一个元素,而元组又可以通过k,v=()进行分解,所以for k,v in {}是可以一次性将字典的key,value值都取出来的

与else结合

        当for循环正常结束时,会执行else操作;当for循环不正常结束时,不会执行else。如:

a = {34: "value1", 12: 4234}for k, v in a.items():    print(k, " = ", v)    if k == 12:        breakelse:    print("ending")
        当没有if判断块时,会执行else语句块;但加上if判断块后,就不会执行,因为for循环不是正常结束的,是被break打断的。

与java不同的用法

        1,for循环中的变量可以直接用于生成列表,如:

L = [d for d in range(11)]print(L) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        2,也可直接使用d进行操作。如:
L = [d**2 for d in range(11)]  # 直接求取d的平方print(L)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

        当然,也可将d**2换成一个函数。如下:

def test(m, n):    return (m*2)+","+nL = [test(m, n) for m in 'xyz' for n in 'abc']  # 直接使用循环变量m,n,并将函数返回值当作列表元素print(L)  # ['xx,a', 'xx,b', 'xx,c', 'yy,a', 'yy,b', 'yy,c', 'zz,a', 'zz,b', 'zz,c']

        3,for循环后可跟if判断,这样只有满足判断条件的变量才会被使用,如:

L = [d**2 for d in range(11) if d % 2 == 0]  # 求取偶数的平方print(L)  # [0, 4, 16, 36, 64, 100]
        4,for循环后可直接跟for循环。如:
L = [m+","+n for m in 'xyz' for n in 'abc']  # for循环后跟另一个循环,直接使用循环中的变量print(L)  # ['x,a', 'x,b', 'x,c', 'y,a', 'y,b', 'y,c', 'z,a', 'z,b', 'z,c']
        从上面生成的列表中可以看出一共生成了9个元素,而且它的生成效果与下面代码的效果一样:
for m in 'xyz':    for n in 'abc':        l.append(m+","+n)
        因此,for循环后跟for循环只是能java中for循环嵌套的简化写法。按此种写法可以写多个for循环。并且按照此思路,for后面跟的if判断也可以跟多个。如:
L = [a+b for a in range(5) for b in range(5, 8) if b % 2 == 0 if a % 2 != 0]print(L)  # [7, 9]

        第一个if判断决定了b只能是偶数,所以b=6;第二个if判断决定了a为奇数,所以a为1,3,故返回的元素只有7和9。

        记住:for循环后跟for循环,只是对java中for循环嵌套的简写;for循环后跟if判断也是对java中for循环中嵌套if的简写




0 0
原创粉丝点击