美文网首页我爱编程
Python3 编程注意点

Python3 编程注意点

作者: 牛奶芝麻 | 来源:发表于2018-02-03 15:08 被阅读16次
    • 整除 3//2

    • 数字转字符串 str(number),字符串转数字 int(str)

    • 字符串所有方法不修改字符串本身 .title() .upper() .lower() .strip()/.lstrip()/.rstrip() .split()

    • 列表方法修改列表本身 .append() .insert(ind,val) del list[index]/.pop(可选index) /.remove(element) .sort(可选 key = lambda x: x[1], 可选reverse=True)(key可以指定按照列表第几维排序,reverse= True可以指定从大到小排序) .reverse()

    • 列表方法不修改列表本身 sorted() len() min() max() sum()

    • 列表循环 for val in list:

    • 创建数字列表 list(range(1,6,2)) # [1,3,5]

    • 列表解析 list=[condition for val in list]

    • 复制列表的正确做法是使用切片 lista=listb[:],而不是直接复制

    • 检查特定值是否在列表中 val (not) in list:,返回bool

    • Python中的逻辑操作符为 and or 和 not,而不是 && || 和 !

    • 条件语句:if-elif-else

    • 字典遍历 for key,val in dic.items():,遍历所有键 for key in,dic.keys():,遍历所有值 for val in dic.values():,判断键值是否存在 if key (not) in dic:,根据键得到值 dic.get(key)

    • 集合 set 的方法 a = set((1,1,2,3)); a.add(4) # 自动去重 1,2,3,4; b = set((1,2,3)); b.remove(3) # 1,2; 两个集合的交、并、差分别用 & | - 表示; 判断集合元素是否存在 if ele in set: # 该方法的时间复杂度为 O(1)

    • input(提示语) 将所有输入视为字符串,如果输入数字必须使用int()转化,如 age=input(), age=int(age)

    • 定义函数 def func(): ,return 可返回任意类型,函数中修改传入的列表参数是永久性的,如果不想在函数中修改列表,可以传入列表的切片形式,如 func(list[:])

    • 传递任意数量实参: func(*ele),所有ele组合成一个tuple

    • 传递任意数量的关键字('a'='b')实参:func(**keyval),所有keyval组合成一个字典

    • 使用as可以给导入的模块(Python文件)或模块中的函数(文件中的函数)重命名,如 from numpy import random as rand

    • 避免使用 from numpy import *这种,尽量使用import numpy as np; np.random()或者 from numpy import random; random()

    • 定义类 class name():

    • 定义子类 class sub_name(sup_name):,且父类 sup_class必须在前面定义。如果子类要继承父类所有属性,则需要在子类的def _ _init() _ _(self, ...)中初始化父类属性super(). _ _init() _ _(...)

    • 导入模块中的类并创建实例 from car import Car, Battery; my_car = Car(...)

    • 文件读写: with open(文件, 'r'/'w'/'r+'/'a') as file; file.read() / file.write(str) / file.readlines()

    • 异常处理:try: 表达式; except ZeroDivisionError: print(错误); else: print(正确)

    • 字符转化为数字:ord(ch),数字转化为字符ASCLL:chr(number)

    • Python中所能表示的最大/最小的数: float("inf") / float("-inf")

    • Python的映射(map)归并(reduce)函数用法: from functools import reduce; list(map(lambda x: x*2, [1,2,3])) # [2,4,6] ; reduce(lambda x,y:x+y, [1,2,3]) # 6

    • 不可以直接修改字符串中的字符,因为字符串是不可变对象。如果想要修改,可以用str.replace('a','b') 或者将字符串转化为可变对象 str = list(str),再或者使用切片的方式

    • 字典按照key/value找到最大值/最小值,或者排序: max(dic.keys() / dic.values()) ;min(dic.keys() / dic.values()) ; sorted(dic.keys() / dic.values()) # 返回一个list;如果想要将键和值都返回,应该使用 sorted(dic.items(), key=lambda x :x[0]/x[1]) # 返回一个list,每个元素是一个tuple,即 [(键,值), (键,值), ...]

    • collections模块有两个有用的组件:deque() 和 defaultdict(int/str/list/set...),deque() 是双向队列,支持 popleft() / pop() 和 appendleft() / append(),defaultdict(...) 是默认字典,当键不存在时返回参数类型的默认值(如 int 类型返回0),而不像dict当键不存在时返回keyError

    • random模块中有随机数组件:random() # 0 <= n < 1 的浮点数;uniform(a,b) # a <= n <= b 的浮点数(a>b也可以, b <= n <= a);randint(a,b) # a <= n <= b的整数;shuffle(list) # 将list打乱,会改变该list;sample(list, n) # 将 list 的前 n 个元素打乱,返回一个新 list,不会修改原来的 list

    • 二维列表(m行n列)初始化(全0)的正确方法:dim2 = [[0 for col in range(n)] for row in range(m)],或者 [[0] * n for row in range(m)],千万不要用 [[0] * n] * m 的错误方法(乘以 m 相当于把对象的引用复制了m次,如果修改二维列表中的一个元素,则该列的所有元素都会被修改)。

    相关文章

      网友评论

        本文标题:Python3 编程注意点

        本文链接:https://www.haomeiwen.com/subject/dsyuzxtx.html