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

    先贴一个教程

    基本操作

      ▲input('……')     
       输出引号里内容并读入

      ▲print('……',a,b)  
       引号里内容原样输出;每用一个逗号分隔都会输出一个空格;
       print('%d %s %.2f' % (2,'123',3.0))
       输出一个%需要用%%转义
       末尾会默认加一个换行,可以用print(……,end=' ')取消回车
       注意可以把输出的值放在list里再输出来加速
       print (' '.join(map(str, res)))

      ▲print('''A
       B
       C''')
       每行都能换行。

      ▲#注释

      ▲单引号和双引号都可以表示字符串;用进行转义。

      ▲缩进决定子程序;if和else后要加冒号。可以用elif代替else if。

      ▲for循环:
       for i in range(0,100000):
       本质是生成了一个很大的list然后一个个访问过去。

      ▲while循环:
       while (x>0):

      ▲int():转化成整数。

      ▲import math:导入math库。

    容器的使用

      ▲list:
       类似于vector,用中括号定义。 a=[1,2,3]
       用len(a)测长度;a[-x]表示倒数第x个数是什么。
       用append(x)在末尾添加一个元素,用insert(p,x)加入到指定位置;用pop()删除最后一个,用pop(i)删除指定位置。
       ls.copy()生成一个等于ls的新的列表。
       使用较为灵活。比如ls+=lt(或ls.extend(lt))表示将lt接到ls后面;
       list里面的元素可以不是同一个类型,甚至可以嵌套list。
       tuple与list类似,但是不可变(没有加入、删除函数);用小括号来定义。

      ▲dict:
       类似于unordered_map,用大括号定义。d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
       可以直接用中括号访问和修改。
       可以用'Bob' in d 进行询问是否存在;也可以用d.get('Bob',-1)访问,没有元素返回-1。
       用d.pop('Bob',-1)删除。
       for循环in后面可以放dict类型。直接引用默认迭代key。
       如果要迭代value,用for value in d.values()
       如果要同时迭代key和value 用for k, v in d.items()。
       enumerate()可以把list转化为“下标-list”的pair

      ▲set:
       用小括号和一个list定义。s = set([1, 2, 3])
       用add(key)和remove(key)进行加入和删除。
       注意可以完全看做一个集合,因此可以进行s1&s2,s1|s2等运算。

    函数相关

      ▲用lambda快速定义函数
       比如f=lambda x,y:x+y

      ▲定义一个普通函数
       def move(x, y, step, angle=0):
          nx=ny=1
          return nx, ny

      ▲传入可变参数
       def calc(*numbers):
          sum = 0
          for n in numbers:
             sum = sum + n * n
          return sum
       调用的时候,可以往Move里放0或多个参数(如move(1,2,3))。进入函数后,它们会打包成一个list。
       如果就是要往里面传整个list类型的东西,可以简写成move(*List)。

      ▲传入关键字参数
       def person(name, age, **kw):
          print('name:', name, 'age:', age, 'other:', kw)
       调用的时候,可以在末尾放0或多个参数,比如person('Adam', 45, gender='M', job='Engineer')。
       进入函数后,它们会打包成一个dict。同样的,可以简单地用**Dict来传入一个dict类型的容器。

      ▲传入命名关键字参数
       def person(name, age, *, city, job):
      中间要加个*号以示区分。在这样的情况下,后面只接受名字(第一维)为city,job的关键字。
      如果之前已经定义过可变参数了,那么不用加*来区分了。

      ▲定义函数参数的顺序:必选参数->默认参数->可变参数->命名关键字参数->关键字参数
      def f(a, b, c=0, *args, **kw):
         print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
      甚至可以组装一个tuple和一个dict直接传进去,即任意一个函数f都可以用形如f(*args,**kw)的形式调用。

      ▲基本函数
       eval()将引号里的东西用python表达式计算结果
       math.sqrt()
       math.acos()
       abs()
       round(x,2)保留2位小数

      ▲随机数相关(import random)
       seed(x)
       random() 生成[0.0,1.0)之间的随机小数
       randint(a,b) 生成[a,b]之间的整数
       shuffle(seq) 把一个序列类型打乱

    高级特性

      ▲使用import decimal调用浮点数高精度库。
       设置计算时的精度:decimal.getcontext().prec=n
       将一个数x转化为它:decimal.Decimal(x)
       初始化常量时,要用单引号括起来。
      
      ▲切片
       a[0:3] :截取list里固定的一段(注意下标左闭右开)。支持负数,0可以省略。
       a[:10:2]:前10个数里每两个中取一个(即a[0],a[2],a[4],a[6],a[8])。中间的数省略,视为在整个list里选。

      ▲列表生成式
       [x * x for x in range(1, 11)]
       甚至可以加判断 [x * x for x in range(1, 11) if x % 2 == 0]

      ▲生成器generator
       定义方式①:将列表生成式的[]替换成()
       每次用g.next()调用下一个值;也可以用 for i in g 循环调用
       定义方式②:用函数。每次在关键字yield后抛出一个值,next后从上次抛出位置继续。
       def fib(max):
          n, a, b = 0, 0, 1
          while n < max:
             yield b
             a, b = b, a + b
             n = n + 1
          return 'done'

    文件相关

      ▲打开和关闭
       <变量名>=open(<文件名>,<打开模式>)
       打开模式和C类似。'r'是只读,'w'覆盖写,'a'追加;'t'为文本文件类型,'b'为二进制文件类型;末尾加一个'+'表示在原功能上同时加上读写功能。
       open默认以"rt"的方式打开;如果读入图片、音乐等,就要用'*b'打开。
       释放文件使用权:<变量名>.close()

      ▲读写格式
       .readall()
       .readline(size=-1) 读入一行。(如果有参数,就是读入size个字符)
       .readlines(size=-1) 读入所有行,放到一个list里。
       文件变量本身是行序列,所以可以用 for line in <文件名>: 遍历。
       .write(s) 写入s
       .writeline(lines) 将一个字符串list写入文件
       .seek(offset)改变文件里操作指针位置。0(开头),1(当前位置),2(文件结尾)

    库的使用

    turtle库

  • 相关阅读:
    Android App内存优化之图片优化
    APP中的存储路径
    为什么源码中很多方法就一行throw new RuntimeException("Stub!")
    Android运行时Crash自动恢复框架-Recovery
    Android图片压缩框架-Tiny 集成
    防止APP退到被安卓系统清理
    Android开发中,那些让你觉得相见恨晚的方法、类或接口
    安卓设置沉浸式状态栏
    Euler Sums系列(四)
    一个含有Fibonacci Number的级数
  • 原文地址:https://www.cnblogs.com/jiangshibiao/p/8447895.html
Copyright © 2011-2022 走看看