前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python3 编程注意点

Python3 编程注意点

作者头像
echobingo
发布2018-04-25 16:31:50
1.1K0
发布2018-04-25 16:31:50
举报
  • 整除 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次,如果修改二维列表中的一个元素,则该列的所有元素都会被修改)。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档