zoukankan      html  css  js  c++  java
  • python学习笔记(三)

    一、python中的循环:

    1.1 while循环

    while 语句的语法如下:

    while condition:
        statement1
        statement2

    默认情况下,print() 除了打印你提供的字符串之外,还会打印一个换行符,所以每调用一次 print() 就会换一次行,如同上面一样。

    你可以通过 print() 的另一个参数 end 来替换这个换行符,就像下面这样,下面的程序写入 ,例如:

    #!/usr/bin/env python3 
    a, b = 0, 1 
    while b < 100: 
       print(b) a, b = b, a + b
    
    #!/usr/bin/env python3 
    a, b = 0, 1 
    while b < 100: 
        print(b, end=' ') 
        a, b = b, a + b 
    print()
    #!/usr/bin/env python3
    i = 1
    print("-" * 50)
    while i < 11:
        n = 1
        while n <= 10:
            print("{:5d}".format(i * n), end=' ')
            n += 1
        print()
        i += 1
    print("-" * 50)

    这里我们在 while 循环里使用了另一个 while 循环,这被称为嵌套循环。你应该已经看到一条有趣的语句:

      print("-" * 50)

    字符串若是乘上整数 n,将返回由 n 个此字符串拼接起来的新字符串。

    1.2 for循环:

    通过 for 语句我们可以使用 for 循环。这里的 for 循环遍历任何序列(比如列表和字符串)中的每一个元素。下面给出示例:

    >>> a = ['ShiYanLou', 'is', 'powerful']
    >>> for x in a:
    ...     print(x)
    ...
    ShiYanLou
    is
    powerful

    我们也能这样做:

    >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> for x in a[::2]:
    ...     print(x)
    1
    3
    5
    7
    9

    range() 函数

    如果你需要一个数值序列,内置函数 range() 会很方便,它生成一个等差数列(并不是列表):

    >>> for i in range(5):
    ...     print(i)
    ...
    0
    1
    2
    3
    4
    >>> range(1, 5)      
    range(1, 5)
    >>> list(range(1, 5))
    [1, 2, 3, 4]
    >>> list(range(1, 15, 3))
    [1, 4, 7, 10, 13]
    >>> list(range(4, 15, 2))
    [4, 6, 8, 10, 12, 14]

    我们可以在循环后面使用可选的 else 语句。它将会在循环完毕后执行,除非有 break 语句终止了循环。

    >>> for i in range(0, 5):
    ...     print(i)
    ... else:
    ...     print("Bye bye")
    ...
    0
    1
    2
    3
    4
    Bye bye

    python 中 for 循环的 else 子句给我们提供了检测循环是否顺利执行完毕的一种优雅方法。

    二、python数据结构之列表:

    列表数据结构。

    2.1  它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型:

    >>> a = [ 1, 342, 223, 'India', 'Fedora']
    >>> a
    [1, 342, 223, 'India', 'Fedora']

    2.2  编号从零开始,你可以通过编号访问每一个盒子里面的值。对于列表,这里的编号称为索引。

    我们像下面这样通过索引来访问列表中的每一个值:

    >>> a[0]
    1
    >>> a[4]
    'Fedora'

    2.3 如果我们使用负数的索引,那将会从列表的末尾开始计数,像下面这样:>>> a[-1]  'Fedora'

    2.4 你甚至可以把它切成不同的部分,这个操作称为切片,例子在下面给出:

    >>> a[0:-1]
    [1, 342, 223, 'India']
    >>> a[2:-2]
    [223]
    
    >>> a[:]
    [1, 342, 223, 'India', 'Fedora']

    2.5 切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小:

    >>> a[:-2]
    [1, 342, 223]
    >>> a[-2:]
    ['India', 'Fedora']

    有个办法可以很容易地记住切片的工作方式:切片时的索引是在两个元素之间 。左边第一个元素的索引为 0,而长度为 n 的列表其最后一个元素的右界索引为 n。

    Python 中有关下标的集合都满足左闭右开原则,切片中也是如此,也就是说集合左边界值能取到,右边界值不能取到。

    Python 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即大于列表实际长度)将被列表实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空列表:

    >>> a[2:32]
    [223, 'India', 'Fedora']
    >>> a[32:]
    []

    2.6 切片操作还可以设置步长,就像下面这样:(它的意思是,从切片索引 1 到列表末尾,每隔两个元素取值。)

    >>> a[1::2]
    [342, 'India']

    2.7 列表也支持连接这样的操作,它返回一个新的列表:

    >>> a + [36, 49, 64, 81, 100]
    [1, 342, 223, 'India', 'Fedora', 36, 49, 64, 81, 100]

    列表允许修改元素:

    >>> cubes = [1, 8, 27, 65, 125]
    >>> cubes[3] = 64
    >>> cubes
    [1, 8, 27, 64, 125]
    
    >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>> letters
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>> # 替换某些值
    >>> letters[2:5] = ['C', 'D', 'E']
    >>> letters
    ['a', 'b', 'C', 'D', 'E', 'f', 'g']
    >>> # 现在移除他们
    >>> letters[2:5] = []
    >>> letters
    ['a', 'b', 'f', 'g']
    >>> # 通过替换所有元素为空列表来清空这个列表
    >>> letters[:] = []
    >>> letters
    []

    2.8 要检查某个值是否存在于列表中,你可以这样做:

    >>> a = ['ShiYanLou', 'is', 'cool']
    >>> 'cool' in a
    True
    >>> 'Linux' in a
    False

    2.9 通过内建函数 len() 我们可以获得列表的长度:

    >>> len(a)
    3

    如果你想要检查列表是否为空,请这样做:

    if list_name: # 列表不为空
        pass
    else: # 列表为空
        pass

    2.10 列表是允许嵌套的(创建一个包含其它列表的列表),例如:

    >>> a = ['a', 'b', 'c']
    >>> n = [1, 2, 3]
    >>> x = [a, n]
    >>> x
    [['a', 'b', 'c'], [1, 2, 3]]
    >>> x[0]
    ['a', 'b', 'c']
    >>> x[0][1]
    'b'
  • 相关阅读:
    jQuery Mobile的学习 jQuery Mobile工具栏、标题栏、页脚栏的定位学习
    【centOS7】centOS7上普通用户切换root用户,相互切换
    【elaseticsearch】elaseticsearch启动报错Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to [9300-9400]
    【docker】docker启动、重启、关闭命令,附带:docker启动容器报错:docker: Error response from daemon: driver failed programming external connectivity on endpoint es2-node
    【centOS】centos7 查看和关闭防火墙
    【elasticsearceh】elasticsearch.yml配置文件详解
    【docker】关于docker 中 镜像、容器的关系理解
    【xshell】xshell设置快捷键 设置Ctrl+C Ctrl+V快捷键为复制粘贴
    【docker】elasticsearch-head无法连接elasticsearch的原因和解决,集群健康值:未连接,ElasticSearch——跨域访问的问题
    【spring cloud】spring cloud Sleuth 和Zipkin 进行分布式链路跟踪
  • 原文地址:https://www.cnblogs.com/zscwb/p/12601336.html
Copyright © 2011-2022 走看看