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

    (Python文件执行过程: .py——>python解析器——>.pyc——>python命令执行该文件;.py——>python解析器——>.pyo(优化的python编译文件)——>python命令执行该文件;)

    一:print语句

    print语句可以打印输出内容。注:Python中,打印字符串可以用 , 拼接,而生成字符串可以用 + 连接两个字符串。

    print 'hello','world'——>打印hello world

    二:注释

    python是用 # 注释的,如:#print ‘hello’;

    三:变量

    在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

    Python与JS一样,是动态的。变量的类型是根据它的值决定的,而不是编译时就指定。

    四:字符串

    类比JS,字符串可以用 '' 或 "" 括起来表示。

    如果字符串中包含单引号,则用双引号表示字符串;如果字符串中包含双引号,则用单引号括起来;如果两者都有,则用 转义。

    多行字符串:python提供了三引号,在三引号中的字符串可以换行编写,打印时也是换行打印的。

    raw字符串:用 r 修饰字符串,相当于把字符串中包含的引号、特殊符号等需要显式转义的 给提取出来了。

    Python字符串默认编码是ASCII,为了解决统一编码问题,引入 u  修饰符,用 u 修饰的字符串用unicode编码。

    字符串截取:同list一样,使用切片,str[beg:end:step]

    五:运算精度问题

    按照“整数和浮点数混合运算的结果是浮点数”的法则,把两个整数中的一个变成浮点数再运算就没问题了。

    六:数组list

    Python数组用 [] 辨别,数组内元素以 , 分隔。另外:数组中元素没有类型要求!即:不要求同一种类型的数据!

    可以按照下标来访问数组,下标可以顺序访问(正数),也可以倒序访问(负数)。

    往数组添加元素:append()添加到末尾,insert(index,val)插入到指定位置。

    数组删除元素:pop()删除末尾;pop(i)删除下标i-1的元素。(注意数组内元素动态前移:前面执行了pop(i)后,数组中原i+1的元素就会前移成为新的i。)

    元素替换:L[i]=newValue即可替换掉原来的值

    数组切片:取数组中某一区间的元素,如:L[beg:end]返回L[beg]~L[end]。L[:]返回整个数组。L[beg:end:step]对beg~end区间每step取一个。(注:负数则倒数切片)

    七:元组tuple

    tuple类似与数组,但是一旦创建完毕则不可修改,用 () 表示,元组内元素用 , 分隔。

    tuple元组只能用下标访问,不能进行增删改。

    单元素tuple: (val,),需要在唯一值后面加 ,  以区分只是一个变量val加了括号以提高优先级。

    tuple的“可变性”:类比Java的final修饰词,tuple中的元素是不能变的,但如果是一个指针则只能保证指向不变,指向的值是可以变的。如:tuple中的[],则数组值是可变的。

    八:条件判断

    Python代码的缩进规:具有相同缩进的代码被视为代码块

    缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

    注意: if、else语句后接表达式,然后:表示代码块开始。

    if score>=60:
        print 'passed'
    else:
        print 'failed'

    if-elif-elif...else:

    if score>=90:
        print 'excellent'
    elif score>=80:
        print 'good'
    elif score>=60:
        print 'passed'
    else:
        print 'failed'

    九:迭代与循环

    for-in迭代遍历  for val in L:   可以迭代访问一切集合对象,如:set、string、list、dict等

    while循环 while 条件:

    用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句。

    在循环过程中,可以用break退出当前循环,还可以用continue跳过后续循环代码,继续下一次循环.

    十:dict

    dict类似于map,是存放键值对的容器。

    d = {//用花括号包裹键值对
        'Adam': 95,  #键值对之间用 , 分隔
        'Lisa': 85,
        'Paul':75,
        'Bart': 59,
    }

    dict访问元素:dict[key](有则返回值,无则报错)、dict.get(key)(在Key不存在的时候,返回None)

    dict判断是否有某键值对: if 'key' in dict:

    dict的key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

    dict添加、更新键值对:dict[key]=val(无则插入,有则覆盖)

    dict遍历:for key in dict://用for遍历dict,默认是遍历它的key们

                      dict.get(key)

    十一:set

    set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的。

    创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素: s = set(['A', 'B', 'B']),set会自动去掉重复的元素。

    访问set的元素:set存储的是无序集合,所以我们没法通过索引来访问,所以只能用判断一个元素是否在set中来访问: if val in set:

    (用if判断一个元素是否在set中速度是很快的。所以可以改进多条件下的if语句:用set存放条件成立的情况,用if in 判断是否其中一个条件成立)

    set的遍历:用 for val in set 遍历set。注意,顺序可能是不同set构造函数的数组参数中的元素顺序的。

    更新set:添加元素时,用set的add(val)方法;删除set中的元素时,用set的remove(val)方法,如果删除的元素不存在set中,remove()会报错(所以remove()前需要判断)

    十二:函数

    定义函数:定义一个函数要使用 def 语句,依次写出 函数名、括号、括号中的参数 和 冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。(注:Python是动态语言,无固定类型,所以函数没有返回值类型这一说)

    Python的函数可以返回多个值,用逗号分隔。其实是返回了一个tuple。

    默认参数:可以在定义函数式,为某些参数赋初值,这样在调用时只传前面的参数的化,会自动使用默认参数的默认值;当传递全部参数进来,则会自动覆盖掉默认参数值。(默认参数可以避免某些常出现的参数值在函数调用时被重复传递)

    可变参数列表:定义函数时,可以把参数列表定义成可变的,即:不指定多少个,而是指定一个 *args ,调用函数时传进来几个参数就是几个参数。传进来的参数会被自动封装成tuple数组,在函数中,通过 args这个tuple数组取用参数即可

    (注:Python是没有自增自减的!所以 ++ 、 -- 是识别不了滴)

    十二:迭代

    迭代访问元素: for val in 集合对象、范围

    迭代获取元素下标:使用 enumerate() 函数,我们可以在for循环中同时访问索引index和元素value。实际上,enumerate() 函数list变成了一个tuple数组,数组中每个元素是一个形如 (index,value) 的tuple。

    for index, value in enumerate(L):
         其中index自动绑定当前变量元素的下标
         value为当前遍历的元素值

    迭代dict中的value们:

    1: values() 方法,把一个 dict 转换成了包含 value 的list,从而可以对list迭代

    2:  itervalues() 方法,它会在迭代过程中依次从 dict 中取出 value。 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

    sum = 0.0
    for x in d.itervalues():
        sum+=x
    print sum/len(d)

    同时迭代dict的key,value:dict.items()方法把key-value对转成了tuple数组,数组中每一个元素是一个tuple,tuple内容为(key,value)

    for key, value in d.items():
       print key, ':', value

    十三:range(beg,end,step)

    生成一个数组,数组内容为 beg~(end-1)之间每step步取一个 。

    利用range不仅生成数组,还可以自定义生成的规则,如:[x * x for x in range(1, 11)] ,生成的数组元素值为 1~10各数的平方。

    规则还可以是函数:

    def generate_tr(name, score):
        if score>=60:
           return '<tr><td>%s</td><td>%s</td></tr>' % (name, score) //%s是占位符,参照c语言的print占位符及赋值
        else:
           return '<tr><td style="color:red">%s</td><td>%s</td></tr>' % (name, score)
    
    tds = [generate_tr(name,score) for name, score in d.iteritems()]

    还可以增加条件过滤,只有条件为true时,才把按照规则生成的值插入到list中:

    [x.upper() for x in L if isinstance(x,str)] //把L中的字符变大写

    可以用多个for in 相连,生成自定义格式的数组元素:[m + n  for m in 'ABC'  for n in '123']——>['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

    (前面 m+n 指定了数组元素的格式,后面for m、n in 指明了每个元素的组成的取值)

  • 相关阅读:
    cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现
    cocos2dx游戏开发——别踩白块学习笔记(一)——Block类
    《数据结构与算法分析》学习笔记(三)——链表ADT
    《数据结构与算法分析》学习笔记(二)——算法分析
    cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
    cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架
    cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备
    《数据结构与算法分析》学习笔记(一)——递归思想!
    好的博客mark
    [uart]理解线路规程的作用
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6866558.html
Copyright © 2011-2022 走看看