zoukankan      html  css  js  c++  java
  • 内建函数与列表常用函数

    汉诺塔问题?

    • 规则:

      1.每次移动一个盘子

      2.任何时候大盘子在下面,小盘子在上面

    • 方法:

      1.n = 1 直接把 A 上的盘子移到 C 上去,A->C 2.n = 2 :

          小盘子放到B 上A->B
          把大盘子放到C上 A->C
          把小盘子放到C上 B->C
      

      3.n = 3:

           把A上的两个盘子,通过C移到B上去,调用递归实现
           把A上的最大的盘子移到C上 A->C
           把B上的两个盘子借助A,移到C上去,调用递归实现
      

      4.n = n:

           把A 上的n-1个盘子,借助c移到B上去,调用递归
           把A 上的 最大的盘子移到C上,A->C
           把B上的n-1个盘子,借助A,移到C上去,调用递归
      
    In [4]:
     
     
    def hano(n,a,b,c):
        """
        汉诺塔的递归实现
        n:代表几个盒子
        a:代表第一个塔
        b:代表第二个塔
        c:代表第三个塔
         ......
        """
        if n == 1:
            print(a,"-->",c)
            return None
        if n == 2:
            print(a,"-->",b)
            print(a,"-->",c)
            print(b,"-->",c)
            return None
        # 把 n-1 个盘子,借助于 c 塔,移动到 b 塔上去
        hano(n-1,a,c,b)
        print(a,"-->",c)
        # 吧 n-1 个盘子借助于 A 塔,移到c 塔上去
        hano(n-1,b,a,c)
    
    
    a = "A"
    b = "B"
    c = "C"
    ?
    n = 1
    hano(n,a,b,c)
    A --> C
    
    In [5]:
     
     
    n = 2
    hano(n,a,b,c)
    A --> B
    A --> C
    B --> C
    
    In [7]:
     
     
    n = 3
    hano(n,a,b,c)
    A --> C
    A --> B
    C --> B
    A --> C
    B --> A
    B --> C
    A --> C
    
     
     
    # list (列表)
    ?
     - del:删除命令

    list (列表)?

    • del:删除命令
    In [10]:
     
     
    # del 删除
    a = [1,2,3,4,5]
    del a[2]
    print(a)
    [1, 2, 4, 5]
    
    In [11]:
     
     
    # del 删除
    # 如果使用del 之后,id 的值和使用前不一样,则生成了一个新的 list
    a = [1,2,3,4,5]
    print(id(a))
    del a[2]
    print(id(a))
    print(a)
    1534237784328
    1534237784328
    [1, 2, 4, 5]
    
    In [12]:
     
     
    # del 一个变量后就不能在使用此变量
    del a
    print(a)
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-12-f7cf5f6cf3fd> in <module>()
          1 # del 一个变量后就不能在使用此变量
          2 del a
    ----> 3 print(a)
    
    NameError: name 'a' is not defined
    
    
     
     
    ## 列表相加(相乘)
    ?
     - 使用加号“ + ”连接两个列表

    列表相加(相乘)?

    • 使用加号“ + ”连接两个列表
    In [13]:
     
     
    a = [1,2,3,4,5]
    b = [11,12,13,14]
    d = a + b
    print(d)
    [1, 2, 3, 4, 5, 11, 12, 13, 14]
    
     
     
    ## 使用乘号操作列表
    ?
    ## 列表直接和一个整数相乘

    使用乘号操作列表?

    列表直接和一个整数相乘?

    In [18]:
     
     
    a = [1,2,3,4,5]
    b = a * 10
    print(b)
    [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
    
    In [20]:
     
     
    ## 成员资格运算
    ?
    # 就是判断一个元素是否在 list 里边
    ?
    a = [1,5,9,6,7]
    b = 5
    # C的值一定是个布尔值
    c = b in a
    print(c)
    ?
    b = 4 
    print(b in a)
    True
    False
    
    In [21]:
     
     
    # not in
    a = [1,5,9,6,7]
    b = 10
    print(b not in a)
    True
    
     
     
    # 链表的遍历
    
    
     - for
     - while

    链表的遍历?

    • for
    • while
    In [22]:
     
     
    # for in list
    a = [1,5,9,6,7]
    ?
    # 挨个打印出a 里边的元素
    for i in a:
        print(i)
    1
    5
    9
    6
    7
    
    In [23]:
     
     
    a = ["I love you"]
    for i in a:
        print(i)
    I love you
    
    In [24]:
     
     
    ## range 
    # 在 in 后面的所有变量要求是可以可迭代的内容
    for i in range(1,11):
        print(i)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    In [ ]:
     
     
    # while循环访问list, 一般不用 while访问
    In [26]:
     
     
    a = [1,2,3,4,5]
    length = len(a)
    # indx 表示的是 list 的下标
    indx = 0
    while indx < length:
        print(a[indx])
        indx += 1
    1
    2
    3
    4
    5
    
    In [28]:
     
     
    ## 双层列表循环
    a = [["one",20],["love",50],["pou",60] ]
    for k,v in a:
        print(k,"__",v)
    one __ 20
    love __ 50
    pou __ 60
    
    In [29]:
     
     
    ## 双层列表循环变异
    a = [["one",20,"onr"],["love",50],["pou",60] ]
    for k,v in a:
        print(k,"__",v)
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-29-61c9fb27ad48> in <module>()
          1 ## 双层列表循环变异
          2 a = [["one",20,"onr"],["love",50],["pou",60] ]
    ----> 3 for k,v in a:
          4     print(k,"__",v)
    
    ValueError: too many values to unpack (expected 2)
    
    
    In [32]:
     
     
    ## 双层列表循环变异
    a = [["one",20,"hah"],["love",50,"yyj"],["pou",60,"bbq"] ]
    # 这个例子说明,k v w 的个数应该跟解包出来的个数一致
    for k,v,w in a:
        print(k,"__",v,"__",w)
    one __ 20 __ hah
    love __ 50 __ yyj
    pou __ 60 __ bbq
    
     
     
    # 列表内涵: list content
    ?
     - 通过简单的方式创作列表

    列表内涵: list content?

    • 通过简单的方式创作列表
    In [33]:
     
     
    # for 创建
    a = ["a","b","c","d"]
    # 用 list a 创建一个 list b 
    # 下面代码的含义是,对于所有 a 中元素,这个放入新的列表中
    b = [i for i in a]
    print(b)
    ['a', 'b', 'c', 'd']
    
    In [34]:
     
     
    # 对于 a 中所有元素乘以 10 ,生成一个新的 list 
    a = ["a","b","c","d"]
    # 用 list a 创建一个 list b 
    # 下面代码的含义是,对于所有 a 中元素,这个放入新的列表中
    b = [i*10 for i in a]
    print(b)
    ['aaaaaaaaaa', 'bbbbbbbbbb', 'cccccccccc', 'dddddddddd']
    
    In [38]:
     
     
    #  还可以过滤原来 list 中内容放入新的列表
    #  比如原有列表 a ,需要把所有 a 中的偶数生成新的列表 b
    ?
    a = [x for x in range(1,35)] # 生成从 1 到 34 的整数列表
    # 吧 a 中所有偶数生成一个新的列表 b 
    b = [m for m in a if m % 2 == 0 ]
    print(b)
    [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34]
    
    In [44]:
     
     
    # 列表生成可以嵌套
    # 由两个列表 a ,b
    ?
    a = [i for i in range(1,10)]# 生成列表 a 
    print(a)
    ?
    b = [i for i in range(100,400) if i % 100 == 0]
    print(b)
    ?
    # 列表生成是可以嵌套,此对等于两个 for 循环嵌套 
    c = [m+n for m in a for n in b]
    print(c)
    ?
    # 上面代码跟下面的代码等价
    for n in a:
        for m in b:
            print(m+n, end="   ")
    print()
    ?
    ?
    ?
    # 嵌套的列表生成式也可以用条件表达式
    c = [ m+n for m in a for n in b if m+n < 200]
    print(c)
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [100, 200, 300]
    [101, 201, 301, 102, 202, 302, 103, 203, 303, 104, 204, 304, 105, 205, 305, 106, 206, 306, 107, 207, 307, 108, 208, 308, 109, 209, 309]
    101   201   301   102   202   302   103   203   303   104   204   304   105   205   305   106   206   306   107   207   307   108   208   308   109   209   309   
    [101, 102, 103, 104, 105, 106, 107, 108, 109]
    
     
     
    ##  关于列表的函数
    ?

    关于列表的函数?

    In [52]:
     
     
    # len 求列表长度
    a = [x for x in range(1,20)]
    print(len(a))
    ?
    # max :求函数中的最大值
    # min: 同理(最小值)
    print(max(a))
    print(min(a))
    ?
    b = ["one","whuin","lone"]
    print(max(b))
    print(min(b))
    19
    19
    1
    whuin
    lone
    
    In [48]:
     
     
    # list :把其他的数据转换成 list 
    a = [1,2,3]
    print(list(a))
    [1, 2, 3]
    
    In [49]:
     
     
    s = "I am is yj do you know"
    print(list(s))
    ['I', ' ', 'a', 'm', ' ', 'i', 's', ' ', 'y', 'j', ' ', 'd', 'o', ' ', 'y', 'o', 'u', ' ', 'k', 'n', 'o', 'w']
    
    In [ ]:
     
     
    print()
  • 相关阅读:
    python学习---字符编码
    python学习--变量
    python学习--pycharm编辑器及优化设置
    python学习--第一个python程序helloworld
    python安装
    python学习---python2与python3的区别
    win7下weblogic安装与部署项目调试记录
    ubuntu获得root用户权限,使用xshell连接!
    linux命令
    nginx + tomcat 集群记录
  • 原文地址:https://www.cnblogs.com/yuanjian6/p/9702916.html
Copyright ? 2011-2022 开发猿


http://www.vxiaotou.com