Python要点复习


Python要点复习

1. 数据类型概览

Number/String/List/Tuple/Set/Dictionary

  • 是否可变:
    • 不可变数据类型:Number/String/Tuple
    • 可变数据类型:List/Set/Dictionary
  • 数字类型
    • int整数(只有一种整数类型)
    • bool类型:True/False
    • float浮点数
    • complex复数

2. 运算符

  • 位运算符:& | ~ ^
  • 逻辑运算符:and or not
  • 成员运算符:
    • in:如果在指定的序列中找到值则返回True,否则返回false
    • not in:语义与in相反
  • 身份运算符:
    • is:判断两个变量是否引用自同一个对象。x is y,如果xy引用的是一个相同对象,则返回True,否则返回False
    • is not:语义相反
    • is==的区别:is判断两个变量是否引用同一个对象,==判断两个变量的值是否相等
  • 删除运算符:del语句删除对对象的引用

3. 字符串

  • 单引号'和双引号"效果完全相同
  • 没有单独的字符类型,字符就是长度为1的字符串
  • 字符串是不可变常量
  • 字符串可以使用+串联在一起,用*运算符重复
  • 字符串截取(切片)的语法格式[begin : end](前闭后开区间)
  • 字符串的索引,从前往后数从0开始递增,从后往前数从-1开始递减
    enter description here

4. 列表

  • 列表使用方括号[],元素间使用逗号,分隔
  • 列表中的元素可以具有不同的数据类型
  • 列表属于可变数据类型,列表中的元素是可以更改的
  • 列表可以使用+串联在一起,用*运算符重复
  • 列表截取(切片)的语法格式[begin : end](前闭后开区间)
  • 列表的索引,从前往后数从0开始递增,从后往前数从-1开始递减
  • 重要API:
    • list.append(obj):在列表末尾添加新元素
    • list.count(obj):统计obj在列表中出现过的次数
    • list.extend(seq):在列表中一次性追加另一个序列seq中的所有值
    • list.index(obj):返回元素obj在列表中第一次出现的索引值
    • list.insert(idx, obj):将对象插入到列表中,位置为idx,该位置原有的元素向后移动
    • list.pop(index=-1):移除列表中指定位置的元素(默认为最后一个)并返回元素值
    • list.reverse():反转列表
    • list.sort(cmp=None, key=None, reverse=False):对列表排序
    • list.clear():清空列表
    • list.copy():复制列表

5. 元组tuple

  • 元组使用小括号(),元素间使用逗号,分隔
  • 元组中的元素可以具有不同的数据类型
  • 元组的元素是不可更改的
  • 单个元素不允许删除或修改,只能删除整个元组
  • 特殊语法:
    • 当元组中只有一个元素时,要在该元素后添加逗号,
      tup = (50, )
  • 元组与字符串类似,下标索引从0开始,可以进行截取,组合等

6. 字典

  • 字典的键值使用冒号:分隔,键值对之间使用逗号,分隔,字典包括在花括号{}
  • 键必须是唯一的,不允许存在重复的键
  • 键必须是不可变类型,如字符串、数字或元组等
  • 向字典增添新的键值对,或者修改现有的值的方法与C++语言类似
  • 重要API:
    • dict.clear():删除字典内的所有元素
    • dict.copy():返回字典的浅复制
    • dict.get(key, default=None):返回指定键的值,如果键不在字典中则返回default
    • key in dict:判断键key是否在字典中
    • dict.items():返回列表形式的(key, value)元组数组
    • dict.keys():返回字典中键的迭代器
    • dict.values():返回字典中值的迭代器
    • dict.update(dict2):将另一个字典中的键-值对更新到字典中
    • dict.pop(key, default=None):删除字典中key对应的键值对,返回对应的值;如果键不存在,则返回传入的default

7. 集合

  • 集合中的元素不允许重复,而且是无序的
  • 集合使用花括号{},元素间使用逗号,分隔
    • 创建空集合时必须使用set(),因为空花括号{ }表示空字典
  • 重要API:
    • set.add(obj):向集合中添加元素,如果元素已经存在,则不做任何操作
    • set.clear():清空集合
    • set.remove(obj):删除集合中的某个元素。如果该元素不存在,将会报错
    • set.discard(obj):删除集合中的某个元素;如果元素不存在,不做任何处理
    • set.copy():返回集合的浅拷贝
    • set.update(set1):将另外一个集合中的元素全部添加到集合中
    • set.isdisjoint(set1):判断两个集合中是否包含相等的元素,如果没有,则返回True
    • 此外,还有集合的交、并、补、差等操作,用到时再查表

8. 迭代器和生成器

  • 迭代器:
    • 迭代器的基本方法iter()next()
  • 生成器:使用了yield的函数称为生成器(generator)
    • 生成器是返回迭代器的函数,只能用于迭代操作
    • 调用生成器,返回的是一个迭代器对象
    • 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行
import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

9. 函数

  • Python函数的参数传递:
    • 不可变类型:类似于C++的值传递,如整数、字符串、元组。如func(a),传递的只是a的值,没有影响a对象本身。比如在func(a)内部修改a的值,只是修改另一个复制的对象,不会影响a 本身
    • 可变类型:类似于C++的引用传递,如列表、字典、集合等。
  • lambda表达式创建匿名函数:
    • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
    • 语法:lambda arg1, arg2,... : expression
    sum = lambda arg1, arg2: arg1 + arg2
    print ("相加后的值为 : ", sum(10, 20))
    print ("相加后的值为 : ", sum(20, 20))
    

10. 推导式:从序列创建序列

  • for之后跟一个表达式,然后有零到多个forif子句。返回结果是一个根据表达从其后的forif上下文环境中生成出来的序列
  • vec = [2, 4, 6]; [3*x for x in vec if x > 3]将生成列表[12, 18]

11. 面向对象

  • Python中类的构造器函数是__init__(...)
    • 在子类构造器中调用父类构造器方法:父类名.__init__(self, arg1, arg2,...)
  • 类的方法的第一个参数必须是self,代表调用该方法的类的实例
  • 类的私有属性和私有方法:使用两个下划线__开头,如__attrs__methods


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM