zoukankan      html  css  js  c++  java
  • Python 学习笔记 之 01

    数据类型

     整数

      十六进制和八进制使用0开头,0x12f, 010

     浮点数

      可以用科学记数法,如1.23x10^9 可以写成 12.3e8 ,0.000012可以写成 1.2e-5

     空值

      用None表示 , 注意大小写。
     整数的运算永远是精确的,浮点数运算可能会有四舍五入的误差。
     

    除法

     10/3 = 3.33333
     9/3 = 3.0
     

     地板除法

      10//3 = 3
      

     负数的地板除法

      负数的取整会取远离0的一方, 如 -10//3 = -4 , 因为-3.33333 取整后是 -4 。

    取余

      10%3 = 1
      取余的算法为 x%y == x-((x//y) * y)
     

    字符串

     '' 或者 ""

    字符串转义

     使用 , 或者 r'' 、 r"" 将指定字符串默认不转义

    字符串换行

     使用'''
     

    字符编码

    •  获取字符的整数表示
          ord()
    •  把整数编码转换为对应字符
          chr()
    •   用十六进制的方式表示字符的整数编码
           '十六进制编码'
    •  将字符从str转为bytes,这样每个字符仅占用一个字节,便于传输。
          b'ABC'
     
    •  将str编码为指定字符集的bytes
          'ABC'.encode('ascii')
    •  将bytes转为str
          b'ABC'.decode('ascii')
      
    如果bytes中包含无法解码的字节,会报错,忽略小部分错误可以使用 b'ABC'.decode('ascii'.errors='ignore')
     
    •  获取长度、获取str包含多少字符、获取bytes包含多少字节
          len()
          len('ABC')
          len(b'ABC')

    字符串格式化

     占位符

    •   整数      %d
    •   浮点数   %f
    •   字符串   %s
    •   十六进制     %x
     有几个占位符, 后面就跟几个变量、值
     
     format()函数
      {0},{1},{2}…… .format('a','b','c'……)

    list

     形式为['a',2,True,None……]
    •  获取元素个数
          len(list_name)
          len(['a','b'……])
    •  通过索引获取元素
          list_name[0] #第一个元素索引位为0
          list_name[-1] #获取最后一个元素
      
    索引超出范围时会报错,为避免报错,可以结合是同len() - 1 的方式来标记索引范围
    •  向list中追加元素
      •     追加到list末尾
               list_name.append()
      •     追加到指定位置 , 如超出元素个数,则插入到最末尾
               list_name.insert(x,'')
    •  向list中删除元素
          list_name.pop()
    •  删除指定索引位置的元素
          list_name.pop(x)
    •  替换某个元素,可以直接赋值给对应索引位
          list_name[2]='new_values'
    •  list可以作为元素被别的list包含
          取嵌套list的元素时,使用多层索引,如:
             lo = [1,2,3,['a','b','c'],4,5]
           如需取 a 值,  则使用 lo[3][0]
    •  如果一个list中没有元素,则长度为0
     

    tuple

     形式为('a',2,True,None……) ,和list几乎一样
    •  tuple初始化后不可以修改,所以不支持append、insert、pop
    •  tuple可以定义为空
    •  如果tuple中只包含一个元素, 在定义的时候要在元素后加逗号,如:

           t0 = ('a',) ,以避免与数学运算的小括号混淆。

    •  虽然tuple不可以修改,但是当tuple包含list时,list的内容是可以修改的。因此,要保证tuple中一个内容都不变,就要保证每一个元素都不可改变。
     

    条件判断

     形式为
      if x:
       active1
      elif y:
       active2
      else :
       active3
     判断行为用冒号,后续跟随的动作要缩进以代表判断后要执行的部分。

    循环

     for...in...循环

      形式为
       for x in y:
        active
      

     while 循环

      形式为
       while 条件:
        active

     批量生成整数序列

      range(n) #从0开始生成到n-1的序列,如果n小于0则为空
     

     退出循环

      break

     跳过本次循环

      continue

     不要滥用break和continue ,尽可能少用,尽可能用循环逻辑去代替break和continue
     

    dict

    1.  key-value存储,一个key只能对应一个value,后出现的key值会覆盖之前相同key的值.
    2.  key要用不可变对象,所以key不能用list。
    3.  dict是使用内存空间换取运行时间的方法,占用内存多于list,但是查找和插入速度极快。
     
     形式为 {'key1':value1, key2:value2 ,…… }
     调用时为 dict_name[keyx]
     key的存放顺序与录入顺序无关。
     
    •  调用时如果key不存在会报错,可以通过in来判断key是否存在
          'abc' in dict_name
    •  使用get()获取key对应的value,如果不存在,返回None
          dict_name.get(keyx)
    •   如果不存在,也可以返回定义值
           dict_name.get(keyx , VALUE)

     从dict中删除

          pop(keyx)

         如果不指定key ,会报错。

    set

    • 和dict类似,也是一组key的集合,但是不包含value。
    • 由于key不能重复,所以set中没有重复值
    • set内的list中的元素顺序并不表示set中的顺序,因此,set中的元素也是无序的。


     创建set需要一个list。
      s0 = set( [1,2,3,4,5] )
     or
      list1 = [1,2,3,4,5]
      s1 = set( list1 )

    •  添加元素到set中

          s0.add()
      添加到set中的元素不支持可变对象,因此list不能作为元素添加到set中

    •  从set中删除元素

          s.remove()
      一次只能remove一个元素。
    不可变对象 使用replace()函数对不可变对象值进行替换后,实际上原对象的值并没有变化,用print()函数对原对象进行输出既可以看出。
    所以,对于不可变对象来说,调用对象的任意方法都不会改变对该对象自身的内容,仅仅会创建新的对象并返回,这样就保证了不可变对象本身是永远不可变的。

  • 相关阅读:
    Jzoj5542 董先生的钦点
    Jzoj5542 董先生的钦点
    (各种)FFT模板
    (各种)FFT模板
    Jzoj3528 图书馆
    Jzoj3528 图书馆
    Jzoj5317 Func
    Jzoj5317 Func
    Jzoj3591 数据
    【UVa11021】Tribles
  • 原文地址:https://www.cnblogs.com/konggg/p/9055877.html
Copyright © 2011-2022 走看看