zoukankan      html  css  js  c++  java
  • 《python基础教程》笔记之 条件语句和循环语句

    • 布尔变量

    下面的值会被解释器看做假(false):

    False None 0 "" () {} []

    其它的一切都被解释为真。

    >>> True
    True
    >>> False
    False
    >>> True == 1
    True
    >>> False == 0
    True
    >>> True + False +42
    43

    bool函数 -- 用来转换其它值,如

    >>> bool([])
    False
    >>> bool('hello,world')
    True

    • 条件语句

    if else elif

    is 和 is not -- 判断两个变量是不是同一个对象

    >>> x=y=[1,2,3]
    >>> z=[1,2,3]
    >>> x == y
    True
    >>> x == z
    True
    >>> x is y
    True
    >>> x is z
    False

    上例中可见,因为is运算符是判定同一性的。变量x和y都被绑定在同一个列表上,而变量z被绑定在另外一个具有相同数值和顺序的列表上。它们的值可能相同,但是却不是同一个对象。

    in 和 not in -- 成员资格运算符

    assert -- 当条件不为真时,程序崩溃

    >>> x = 5
    >>> assert 0<x<10
    >>> assert 5<x <4

    Traceback (most recent call last):
      File "<pyshell#25>", line 1, in <module>
        assert 5<x <4
    AssertionError

    • 循环

    range -- 内建范围函数,它包含下限,但不包含上限,如

    >>> range(0,10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    for num in range(0, 10):
        print num,

    结果如下

    >>>
    0 1 2 3 4 5 6 7 8 9

    循环遍历字典,可以使用序列解包,如

    d = {'x':1, 'y':2}
    for key, value in d.items():
        print key, 'corresponds to', value

    结果

    >>>
    y corresponds to 2
    x corresponds to 1

     zip -- 可以将任意多个序列“压缩”在一起,然后返回一个元组的列表,同时他可以应付不等长的序列,当最短的序列“用完”时就会停止,如

    >>> zip(range(5), xrange(10000))
    [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
    >>> names=['a', 'b', 'c']
    >>> ages = [45, 23 ,98]
    >>> zip(names, ages)
    [('a', 45), ('b', 23), ('c', 98)]

    并行迭代,如

    names=['a', 'b', 'c']
    ages = [45, 23 ,98]
    for name, age in zip(names, ages):
        print name, 'is', age, 'old'

    结果

    >>>
    a is 45 old
    b is 23 old
    c is 98 old

    编号迭代 -- 迭代序列中的对象,同时还要获取当前对象的索引,如

    names=['Mr.a', 'Ms.b', 'Mr.c']
    for index, name in enumerate(names):
        if 'Mr' in name:
            names[index] = 'nan'
    for name in names:
        print name,

    结果
    >>>
    nan Ms.b nan

    翻转和排序迭代(sorted和reversed) -- 作用域任何序列或可迭代对象上,不是原地修改对象,而是返回翻转或排序后的版本,但是返回对象不能直接对它使用索引、分片以及调用list方法,可以使用list类型转换返回的对象,如

    >>> sorted([4,3,8,6,3,])
    [3, 3, 4, 6, 8]
    >>> sorted('hello, world!')
    [' ', '!', ',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
    >>> list(reversed('hello, world!'))
    ['!', 'd', 'l', 'r', 'o', 'w', ' ', ',', 'o', 'l', 'l', 'e', 'h']
    >>> ''.join(reversed('hello, world!'))
    '!dlrow ,olleh'

    break/continue -- 跳出循环/继续下一轮循环

    循环中的else子句 -- 如果循环中没有调用break时,else子句执行,如

    from math import sqrt
    for n in range(99, 81, -1):
        root = sqrt(n)
        if root == int(root):
            print n
            break
    else :
        print "Didn't dind it!"

    结果

    >>>
    Didn't dind it!

    • 列表推导式--轻量级循环

    列表推导式是利用其它列表创建新列表的一种方法,如

    >>> [(x,y) for x in range(3) for y in range(3)]
    [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    >>> girls = ['alice', 'bernice', 'clarice']
    >>> boys = ['chris', 'arnold', 'bob']
    >>> [b+'+'+g for b in boys for g in girls if b[0] == g[0]]
    ['chris+clarice', 'arnold+alice', 'bob+bernice']

  • 相关阅读:
    bzoj 3036: 绿豆蛙的归宿
    bzoj 2956: 模积和 ——数论
    bzoj 4378: [POI2015]Logistyka ——树桩数组+离散化
    Codeforces Round #441 Div. 2题解
    es 学习笔记
    Redis 热点key
    深入拆解Tomcat &Jetty——极客时间
    mysql 行转列
    在kafka connect 同步 mysql 主从数据库
    使用Kafka Connect 导入导出数据
  • 原文地址:https://www.cnblogs.com/qiantangbanmu/p/4310432.html
Copyright © 2011-2022 走看看