Python的学习笔记--高级特性

付威     2019-03-09   1804   5min  

数组的切片

定义一个数组

arr=list(range(100))
  1. 数组取前3个元素 arr[0:3],0可以省略,arr[:3],打印结果:[0,1,2]

  2. 数组取后面三个元素: arr[-3:0],也可写为:arr[-3:],打印结果:[97,98,99]
  3. 数组取后面三个元素: arr[97:],是跳过前97个数字,打印结果:[97,98,99]
  4. 可以指定取值的间隔 arr[:10:2],打印结果:[0, 2, 4, 6, 8]
    如果在全部范围内查询,可以省略查询的个数,arr[::2]这样打印出来所有的偶数。

  5. 切片的方法同样适用于tuple

  6. 字符串可以看成是字符的数组,可以使用,"ABCDEFG"[:3] 输出结果ABC

迭代循环

  1. list的循环

      arr=list(range(10))
      for a in arr: 
           print(a)
    
  2. dict循环

      dict={"a":1,"b":2,"c":3}
      for a in dict: 
      print(a)
    
      dict={"a":1,"b":2,"c":3}
      for x,y in dict.items(): 
           print(x,y)
    
      a 1
      b 2
      c 3
    
    
  3. 字符串循环

      for a in "ABCD": 
             print(a)
     
    
  4. 多个变量
      for x, y in [(1, 1), (2, 4), (3, 9)]:
           print(x, y)
    
    

    打印结果:

      1 1
      2 4
      3 9
    
  5. 带索引的循环写法

     for i, value in enumerate(['A', 'B', 'C']):
           print(i, value)
    
    

    打印结果:

      0 A
      1 B
      2 C
    
  6. 判断能否被迭代

      from collections import Iterable
      isinstance('abc', Iterable)
    
    

列表生成式

列表生成式可以更简单的把生成一个list或者tuple.

定义一个100的数组,arr=list(range(100))

  1. 定义一个100偶数的数组

      arr=[2 * x for x in list(range(100))]
    
      或者arr=[x for x in list(range(200)) if x%2==0]
    
    

    打印结果:[0,2,4...198]

  2. 定义两个循环生成一个组合

      str=[a+b for a in "ABC"  for b in "XYZ"]  
    

    打印结果:['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

  3. 使用多个变量

      dict = {'a': 'A', 'b': 'B', 'c': 'C' }
      dic=[k + '=' + v for k, v in dict.items()]
      print(dic)   
    

    打印结果:['a=A', 'b=B', 'c=C']

  4. 使用函数

      arr=[x.upper() for x in "abc"]
      print(arr)
    
    

    打印结果:['A', 'B', 'C']

    获得当前路径,可以用一句代码

      import os
      fs=[d for d in os.listdir('.')] 
      print(fs)
    
  5. 表达式可以赋值给一个变量,实现延迟加载

      g = (2 * x for x in range(10))
      print(next(g))
      print(next(g))
      print(next(g))
      print(next(g))
      print(next(g))
         
    

    打印结果:0,2,4,6,8

    也可以使用循环打印:

      g = (2 * x for x in range(10))
      for x in g:
           print(x)
    
(本文完)

作者:付威

博客地址:http://blog.laofu.online

如果觉得对您有帮助,可以下方的RSS订阅,谢谢合作

如有任何知识产权、版权问题或理论错误,还请指正。

本文是付威的网络博客原创,自由转载-非商用-非衍生-保持署名,请遵循:创意共享3.0许可证

交流请加群113249828: 点击加群   或发我邮件 laofu_online@163.com

付威

获得最新的博主文章,请关注上方公众号