《Python基础教程》第1~5章 学习笔记

来源:互联网 发布:金锐盘开票软件 编辑:程序博客网 时间:2024/04/30 10:06
Python 1-5章

tags: Python Learning Note


第1章 基础知识

  • 1.2 交互式解释器
  • 1.4 数字和表达式
      整数除法:1/2=0(可使用`from __future__ import division`或者附加`-Qnew`执行)  
    • 1.4.1 长整型数(将在大数后面加L)
    • 1.4.2 十六进制和八进制(用开头确定:0xAF(175),010(8)
  • 1.5 变量(直接用=赋值)
  • 1.7 获取用户输入input("")等)
  • 1.9 模块
      `from 模块 import 函数`  可以用变量引用函数(`foo=math.sqrt`)
    • 1.9.1 cmath和复数cmath.sqrt支持复数)
  • 1.10 保存并执行程序
    • 1.10.3 注释(用#)
  • 1.11 字符串
    • 1.11.1 单引号字符串和转义引号
      单双引号没区别。
       转移在前面加上\。
    • 1.11.2 拼接字符串(可用+拼接)
    • 1.11.3 字符串表示,str和repr
      str可以转换值为字符串。
      repr,以Python表达式形式表示值。
      可以比较str(10000L)和repr(10000L)。
      反引号效果跟repr一样,但是不推荐使用,因为3以上不支持。
    • 1.11.4 input和rawinpm的比较
      input会假设用户输入的是合法的Python表达式(与repr相反)。
      row_input会把所有的输入当初原始数据(row_data)。
        如: 对于`name = input("name:")`,只能输入"hcbbt",而直接hcbbt不带双引号会报错。
    • 1.11.5 长字符串、原始字符串和Unicode
      长字符串:如果字符串要跨多行,可以用三个引号'''(or""")代替普通引号。
      这里和用\加回车跨行的区别是,用\加回车输出会把各个行凑一行,而三个引号则一样跨行。
      原始字符串:在引号前面加上r可以使用原始字符串,字符串里面无法再转移。
        这里比较麻烦的是处理字符串里面的引号,里面的引号前面加上\后输出的原始字符串也会有\的,这里可以用单双括号混合用来绕开这个问题。另外注意原始串最后面不能是\,否则识别不了。
      Unicode字符串:在字符串前使用u前缀。

第2章 列表和元组

  • 2.1 序列概览
      列表和元组的主要区别在于,列表可以修改,元组则不能。    一般来说,在几乎所有的情况下列表都可以替代元组。(例外情况:使用元组作为字典的键。)
  • 2.2 通用序列操作
    • 2.2.1 索引
      序列中的所有元素都是有编号的--从0开始递增。这些元素可以通过编号分别访问。
        字符串就是一个由字符组成的序列。  
      字符串字面值能够直接使用索引,如'Hello'[1] = 'e'
      如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。
        索引可以为负数。
    • 2.2.2 分片
      第1个索引的元素是包含在分片内的,而第2个则不包含在分片内。
      可显式设置步长(不能为0)。
    • 2.2.3 序列相加(使用加号。)
      两种相同类型的序列才能进行连接操作。
    • 2.2.4.乘法(重复n次)
      空列表:[],空值:None。 初始化:[None] * 10
    • 2.2.5 成员资格(关键字in,返回值True/False)
    • 2.2.6 长度、最小值和最大值
      len(nums)
      max(nums)
      min(nums)
    • 2.3 列表:Python的“苦力”
    • 2.3.1 list函数
      string->list: list(str)
      list->string: ''.join(somelist)
    • 2.3.2 基本的列表操作
      元素赋值:用下标赋值。
      删除元素:del names[2]
      分片赋值:可以使用与原序列不等长的序列将分片替换。长插短,短插长都可以。
        如:name = list('Perl')     name[1:]=list('ython'),此时''.join(name)='Python'  
      也可以通过分片删除元素:name[1:2] = [],'y'就被删掉了。
    • 2.3.3 列表方法
      对象.方法(参数)
      append:在列表后追加新对象。
      count:统计某个元素在列表中出现的次数。
      extend:可以在列表的末尾一次性追加另一个序列中的多个值。(修改了前面的列表)(a.append(b)等价于分片赋值a[len(a):] = b
      index:从列表中找出某个值第一个匹配项的索引位置。(不存在会引发异常)
      insert:用于将对象插入到列表中。a.insert(3,'test')在下标为3的位置插入'test'。
      pop:会移除列表中的一个元素(默认是最后一个),并且返回该元素的值。
      remove:移除列表中某个值的第一个匹配项。(第一次出现的值)
      reverse:将列表中的元素反向存放。(不会返回列表,而是返回迭代器。可使用list(reserved(x))返回列表)
      sort:用于在原位置对列表进行排序。(返回了空值)(可用sorted()函数返回列表)

      关于sort高级排序**:
      内建函数cmp(x,y)在x < y时返回负数,在x > y时返回正数,如果x = y则返回0。
      sort默认用的是cmp,我们可以直接写比较函数并调用。如a.sort(cmp2)
      sort方法有另外两个可选的参数--键函数key(如key=len)和布尔值reverse(True即反向,False正向,默认False)。

    • 2.4 元组:不可变序列
      元组和字符串都不能修改。
      空元组可以用没有包含内容的两个圆括号来表示。
    • 2.4.1 tuple函数
      以一个序列或字符串作为参数并把它转换为元组。
    • 2.4.2 基本元组操作(除了无法修改之外和列表差不多)
    • 2.4.3 那么,意义何在
      元组可以在映射(和集合的成员)中当作键使用--而列表则不行。

第3章 使用字符串

  • 3.1 基本字符串操作
    除了不可修改和列表一样。
  • 3.2 字符串格式化:精简版
    用包含转换说明符的字符串+%+元组或字典实现。如:"Hello, %s. %s enough for ya?" % ('world', 'Hot')。(如果用列表会被当成一个值)

    如果要在格式化字符串里包含百分号,那么必须使用%%。

    模版字符串,需要from string import   Template。关键字为$,Template,方法为substitute。(同样如果要输出$就要使用$$了。)(还可以使用字典的映射键设置关键字)
        如:Template('Hello, $x. ${y}t enough for ya?').substitute(x='world', y='Ho')
  • 3.3 字符串格式化:完整版(跟c等其他语言的转换说明符一样,不想多说)
    • 3.3.1 简单转换
    • 3.3.2 字段宽度和精度(可以用%*s,后面元组里面加上数值表示*位置的数)
    • 3.3.3 符号、对齐和0填充%a10s,a为0表示0填充,-表示左对齐,+为标出正负(+0))
  • 3.4 字符串方法 字符串常量(import string):string.digits/ letters/ ascii_letters/ lowercase/ uppercase/ printable/ punctuation
    • 3.4.1 find(查找第一个匹配子串,没有找到返回-1,可以提供起点和终点)
    • 3.4.2 join'+'.join(['1','2','3']))(队列中添加元素(注意:需要添加的队列元素都必须是字符串))
    • 3.4.3 lower(返回字符串的小写字母版)(title方法和string.capwords:单词首字母大写)
    • 3.4.4 replace(所有匹配项均被替换)
    • 3.4.5 split(将字符串分隔成序列,与join相反)
    • 3.4.6 strip(返回去除两侧空格的字符串)(可指定去除字符串,参数为所有要去除的字符组成的字符串)
    • 3.4.7 translate(同时替换多个字符,得先制作转换表。如:a='Hello,world' t=a.maketrans('l','a') a.translate(t))

第4章 字典:当索引不好用时

    字典是python中唯一内建的映射类型。字典中的值并没有特殊的顺序。
  • 4.2 创建和使用字典
    phonebook={'A':'1111', 'B':'2222', 'C':'3333'}
    • 4.2.1 dict函数
        dict是一个类型。  
      通过其他字典或(键,值)序列来建立字典:
          items = [('A','1111'),('B','2222')]    pb = dict(items)
      或者直接用关键字参数创建:
          pb = dict(A='1111', B='2222')
    • 4.2.2 基本字典操作
      len(d):长度
      d[k]:取键k的值
      d[k]=b:赋值(关联)
      del d[k]:删除项
      k in d:检查键
         键类型是不可变类型  
    • 4.2.3 字典的格式化字符串
        "AAA's phone number is %(AAA)s." % phonebook
    • 4.2.4 字典方法
      clear:清除字典中所有的项目。
      copy:返回一个具有相同键值对的新字典。
            这是浅复制,值是相同的,不是副本复制!        用`deepcopy`可以实现深复制(`from copy import deepcopy`)
      fromkeys :使用给定的键建立新的字典,每个键默认对应的值为None(可以自己提供默认值)。 get:更宽松的访问字典项的方法,字典中不存在的项会返回None(可以自己提供默认值)。
      has_key:检查字典中是否含有给出的键。(3.0没有此函数)
      items:将所有的字典项以列表方式返回,返回时没有特殊的顺序。(iteritems返回迭代器)
      keys:将键以列表方式返回,iterkeys同iteritems。
      pop:弹出对应值并删去该项。
      popitem:随机弹出项。(因为没有顺序)
      setdefault:和get差不多,如果键不存在会更新字典。
      update:利用一个字典项更新另外一个字典。
      values:以列表的形式返回字典中的值。(可重复)(itervalues返回迭代器)

第5章 条件、循环和其他语句

  • 5.1 print和import的更多信息
    • 5.1.1 使用逗号输出(多个表达式,多句不换行)(打印元组要在外层加())
    • 5.1.2 把某件事作为另一件事导入
      import 模块:把模块中的函数导入当前的语义表(as 别名)
      from 模块 import 函数1,函数2...:直接导入命名
      from 模块 import *:导入所有除了以下划线_开头的命名。
  • 5.2 赋值魔法
    • 5.2.1 序列解包x,y,z=1,2,3分别复制,x,y=y,x交换值,x,y,z=(1,2,3)序列赋值)(3.0可以用星号运算符收集多余元素)
    • 5.2.2 链式赋值(将同一个值赋给多个变量的捷径。)
    • 5.2.3 增量赋值(-=+=*=\/=...)
  • 5.3 语句块:缩排的乐趣(4个空格缩进,冒号表示语句块开始)
  • 5.4 条件和条件语句
    • 5.4.1 这就是布尔变量的作用
      标准值Flase和None、所有类型的数字0(浮点型、长整型和其他类型等)、空序列(如空字符串、元组和列表)以及空字典都为假。其他解释为真。(使用bol()函数转换)
    • 5.4.2 条件执行和if语句(和其他语言一样,不想多说)
    • 5.4.6 更复杂的条件
      1. 0<age<100 连接比较
      2. in, not in 成员资格运算符
      3. is, not is 同一性运算符(是否同一对象)
      4. 字符串序列比较:字典序
      5. and优先级大于or
    • 5.4.7 断言(在程序中置入检查点 assert 0<age<100
  • 5.5 循环
    • 5.5.1 while循环
    • 5.5.2 for循环
         for x in lst:        print x
      可以用range(a,b)实现[a,b)的整数序列。
        range直接创建序列(2.x下),xrange()一次只创建一个数,适合大序列。(可加步长)
    • 5.5.3 循环遍历字典元素
         for key(or value) in dictionary: pass
    • 5.5.4 一些迭代工具
      可以用zip把多个序列打包起来变成元组序列,然后就方便for了。(for x in zip(a,b):...,如果len(a)<len(b),len(zip(a,b))==len(a))
      enumerate():枚举容器中的序列和值,返回为迭代器。
      reversed()返回迭代器,sorted()返回列表。
    • 5.5.5 跳出循环breakcontinue
    • 5.5.6 循环中的else子句(没调用break后执行)
  • 5.6 列表推导式——轻量级循环
          [表达式 for 变量 in 列表 if 条件](forif可以多个)
  • 5.7 三人行
    • 5.7.1 什么都没发生pass
    • 5.7.2 使用del删除(不仅会移除一个对象的引用,还会移除那个名字本身)
    • 5.7.3 使用exec和eval执行和求值字符串
      exec:执行里面的字符串,可以增加作用域scope。(如g = {} exec "a=1" in g等效于exec("a=1", g))(可以指定多个作用域)
      eval:用于“求值“,会返回值。

本文已用马克飞象重新排版,然后再从evernote复制处理的。
衷心感谢马克飞象和evernote的支持。



4 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 商家说衣服有污渍不退怎么办 退回商家换货不给寄应怎么办 毕业照跟拍摄影师拍砸了怎么办 韵达快递寄快递快递单号丢了怎么办 韵达快递把我的户口本弄丢了怎么办 淘宝卖家发货与实际货物不符怎么办 寄出去的快递不知道物流单号怎么办 淘宝买家所需要的货物填错怎么办 淘宝卖家顾客拒绝签收货要怎么办 闲鱼买家申请退货退款不发货怎么办 在闲鱼买东西买家恶意退货怎么办 淘宝卖家给的退货地址是国外怎么办 淘宝顾客下单了一件代发怎么办 闲鱼上卖东西快递单号填错了怎么办 淘宝收货后快递显示不签收怎么办 淘宝快递显示签收但没收到货怎么办 国外客人收到货后嫌弃质量差怎么办 理发15涨到20客人少了怎么办 微店买家收到货了又退款怎么办 百世快递单号查不到物流信息怎么办 知道快递单号怎么查物流信息怎么办 快递单号一直查不到物流信息怎么办 买家未收到货就发起仅退款怎么办 拼多多收货码短信没了怎么办 淘宝运费险快递单号填错怎么办 如果淘宝小二判定退款不同意怎么办 商品退回卖家电话关机不收货怎么办 咸鱼等待卖家提供凭证超时怎么办 闲鱼等待卖家上传凭证超时怎么办 集运仓说有违禁品不能入库怎么办 转运停止寄到转运仓了怎么办 为什么阿里免费开店会被限制怎么办 e盘里的文件已经更改或移动怎么办 决斗之城忘了在那个服务器怎么办 ipad需要激活锁忘了id怎么办 小米非系统储存空间满了怎么办的 学生打暑假工被代理拖欠工资怎么办 华为畅享7plus进水了怎么办 华为荣耀6plus喇叭坏了怎么办 华为荣耀7x听筒声音小怎么办 华为智能手表开不了机了怎么办