资讯动态

python常用方法汇总

发布时间:2026/10/30 4:40:53 来源:尧图企业网站定制
#rangerange()是 Python 中用于生成整数序列的内置函数常用于for循环。基本语法pythonrange(stop) # 0 到 stop-1 range(start, stop) # start 到 stop-1 range(start, stop, step) # 按 step 步长注意包含start不包含stop左闭右开。三种用法1. 只传一个参数for i in range(5): print(i) # 输出: 0 1 2 3 42. 传两个参数pythonfor i in range(2, 6): print(i) # 输出: 2 3 4 53. 传三个参数步长pythonfor i in range(0, 10, 2): print(i) # 输出: 0 2 4 6 8 # 负数步长倒序 for i in range(5, 0, -1): print(i) # 输出: 5 4 3 2 1常见操作python# 转成列表 list(range(5)) # [0, 1, 2, 3, 4] list(range(1, 10, 3)) # [1, 4, 7] # 获取长度 len(range(5)) # 5 len(range(0, 10, 2)) # 5 # 索引和切片 r range(10) r[0] # 0 r[-1] # 9 r[2:5] # range(2, 5) # 判断是否包含 3 in range(5) # True 10 in range(5) # False配合 for 循环的常见场景python# 遍历列表索引 fruits [apple, banana, cherry] for i in range(len(fruits)): print(i, fruits[i]) # 但更推荐用 enumerate for i, fruit in enumerate(fruits): print(i, fruit)注意事项range 返回的是对象不是列表Python 3 中它是惰性的、节省内存的需要时可用list()转换。参数必须是整数不能是浮点数pythonrange(0, 1, 0.1) # 报错 TypeError需要小数序列时用numpy.arange()或列表推导式。step 不能为 0pythonrange(0, 5, 0) # 报错 ValueErrorrange 对象可重复迭代不同于生成器pythonr range(3) list(r) # [0, 1, 2] list(r) # [0, 1, 2] 还能再用-----------下面按「数据类型」和「常用内置函数」分类汇总 Python 中最常用的方法方便你快速查阅。一、字符串 strpythons Hello World # 大小写 s.upper() # HELLO WORLD s.lower() # hello world s.title() # Hello World s.capitalize() # Hello world s.swapcase() # hELLO wORLD # 查找 / 判断 s.find(World) # 6 找不到返回 -1 s.index(World) # 6 找不到报错 s.count(l) # 3 s.startswith(He) # True s.endswith(ld) # True abc123.isalnum() # True 是否字母数字 abc.isalpha() # True 是否纯字母 123.isdigit() # True 是否纯数字 .isspace() # True 是否空白 # 修改返回新字符串原串不变 s.replace(World, Python) # Hello Python s.strip() # 去两端空白 s.lstrip() # 去左端 s.rstrip() # 去右端 s.split( ) # [Hello, World] -.join([a,b])# a-b # 对齐 ab.center(6, *) # **ab** ab.ljust(5, -) # ab--- ab.rjust(5, -) # ---ab 42.zfill(5) # 00042二、列表 listpythonlst [3, 1, 2] # 增 lst.append(4) # 末尾加一个 lst.extend([5, 6]) # 末尾加多个 lst.insert(0, 0) # 指定位置插入 # 删 lst.pop() # 删末尾并返回 lst.pop(0) # 删指定位置 lst.remove(2) # 删第一个值为 2 的 lst.clear() # 清空 del lst[0] # 删除索引 # 改 / 查 lst[0] 9 lst.index(2) # 值 2 的索引 lst.count(2) # 值 2 出现次数 # 排序 / 反转 lst.sort() # 原地升序 lst.sort(reverseTrue) # 原地降序 lst.sort(keylambda x: -x) # 自定义 lst.reverse() # 原地反转 sorted(lst) # 返回新列表 # 复制 lst.copy() # 浅拷贝 lst[:] # 同上三、字典 dictpythond {a: 1, b: 2} # 查 d.get(a) # 1 d.get(x, 0) # 0 默认值 d.keys() # dict_keys([a,b]) d.values() # dict_values([1,2]) d.items() # dict_items([(a,1),(b,2)]) # 增 / 改 d[c] 3 d.update({d: 4}) # 批量更新 d.setdefault(e, 5) # 不存在才设值 # 删 d.pop(a) # 删并返回 d.pop(x, None) # 带默认值 d.popitem() # 删最后一个键值对 del d[b] d.clear() # 遍历 for k in d: ... for k, v in d.items(): ... # 合并Py3.9 d1 | d2四、集合 setpythons {1, 2, 3} s.add(4) s.remove(4) # 不存在报错 s.discard(4) # 不存在不报错 s.pop() # 随机删一个 s.clear() # 集合运算 a | b # 并集 a b # 交集 a - b # 差集 a ^ b # 对称差 a.union(b) a.intersection(b) a.difference(b)五、元组 tuplepythont (1, 2, 3) t.count(2) # 出现次数 t.index(2) # 索引 # 不可变无增删改六、常用内置函数pythonlen(x) # 长度 type(x) # 类型 isinstance(x, int)# 类型判断 int(3) / float(3.5) / str(3) abs(-5) # 5 round(3.14159, 2) # 3.14 max([1,2,3]) # 3 min([1,2,3]) # 1 sum([1,2,3]) # 6 sorted(x) # 排序返回新列表 reversed(x) # 反转迭代器 enumerate(x) # 带索引遍历 zip(a, b) # 拉链 map(f, x) # 映射 filter(f, x) # 过滤 any(x) / all(x) # 任一 / 全部 range(n) # 整数序列七、列表推导式 / 生成式python[x*2 for x in range(5)] # [0,2,4,6,8] [x for x in range(10) if x % 2 0] # [0,2,4,6,8] {x: x**2 for x in range(3)} # {0:0,1:1,2:4} {x for x in range(5)} # {0,1,2,3,4} (x for x in range(5)) # 生成器惰性八、文件操作pythonwith open(f.txt, r, encodingutf-8) as f: content f.read() # 全部读 # f.readline() # 读一行 # f.readlines() # 读所有行成列表 # for line in f: ... # 逐行遍历 with open(f.txt, w, encodingutf-8) as f: f.write(hello\n) # 模式: r读 w覆盖写 a追加 b二进制九、异常处理pythontry: x 1 / 0 except ZeroDivisionError as e: print(e) except (ValueError, TypeError): ... else: print(无异常) finally: print(总会执行)十、函数相关pythondef f(a, b1, *args, **kwargs): return a b lambda x: x 1 # 匿名函数 map(lambda x: x*2, [1,2])---------下面详细汇总 Python字典dict的用法从创建到各种常用操作。一、创建字典pythond {a: 1, b: 2} d dict(a1, b2) # 关键字创建 d dict([(a, 1), (b, 2)]) # 从键值对列表 d dict.fromkeys([a, b], 0)# {a:0, b:0} d {} # 空字典 d {x: x**2 for x in range(3)} # 推导式 {0:0,1:1,2:4}二、访问元素pythond {a: 1, b: 2} d[a] # 1键不存在会报 KeyError d.get(a) # 1 d.get(x) # None键不存在返回 None d.get(x, 0) # 0指定默认值 # 判断键是否存在 a in d # True x not in d # True三、增 / 改pythond[c] 3 # 新增或覆盖 d.update({d: 4, e: 5}) # 批量更新 d.update(f6) # 关键字更新 d.setdefault(g, 7) # 键不存在才设置 d.setdefault(a, 99) # a 已存在不改变返回 1 # 合并字典Py3.9 d1 {a: 1} d2 {b: 2} d3 d1 | d2 # {a:1, b:2} d1 | d2 # 原地合并四、删除pythond {a: 1, b: 2, c: 3} d.pop(a) # 删并返回 1 d.pop(x, None) # 键不存在返回默认值不报错 d.popitem() # 删除并返回最后一个键值对LIFO del d[b] # 删除指定键 d.clear() # 清空五、遍历pythond {a: 1, b: 2} for k in d: # 遍历键 print(k) for k in d.keys(): # 同上 print(k) for v in d.values(): # 遍历值 print(v) for k, v in d.items(): # 遍历键值对最常用 print(k, v)注意遍历时不能直接增删键否则报RuntimeError。需要修改时先转成list(d.items())。六、视图对象pythond {a: 1, b: 2} d.keys() # dict_keys([a, b]) d.values() # dict_values([1, 2]) d.items() # dict_items([(a,1), (b,2)]) # 视图是动态的字典变了视图也跟着变 list(d.keys()) # [a, b] 转列表七、常用内置函数配合pythond {a: 1, b: 2, c: 3} len(d) # 3 max(d) # c 按 key 比较 min(d) # a sum(d.values()) # 6 sorted(d) # [a,b,c] sorted(d.items()) # 按键排序 sorted(d.items(), keylambda x: x[1]) # 按值排序 # 按键/值排序 dict(sorted(d.items(), keylambda x: x[1], reverseTrue))八、嵌套字典pythonusers { alice: {age: 25, city: NY}, bob: {age: 30, city: LA}, } users[alice][age] # 25 users[bob][city] # LA # 遍历嵌套 for name, info in users.items(): print(name, info[age])九、实用技巧python# 1. 统计出现次数 words [a, b, a, c, a] count {} for w in words: count[w] count.get(w, 0) 1 # {a: 3, b: 1, c: 1} # 用 collections.Counter 更简单 from collections import Counter Counter(words) # Counter({a: 3, b: 1, c: 1}) # 2. 反转键值值唯一时 {v: k for k, v in d.items()} # 3. 按键分组 from collections import defaultdict groups defaultdict(list) for k, v in [(a,1),(b,2),(a,3)]: groups[k].append(v) # {a: [1,3], b: [2]} # 4. 字典推导式 {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16} # 5. 深拷贝 vs 浅拷贝 import copy d2 d.copy() # 浅拷贝 d3 copy.deepcopy(d) # 深拷贝嵌套也复制十、注意事项键必须可哈希str、int、tuple可以list、dict、set不行。pythond {[1,2]: x} # 报错 TypeErrorPy3.7 字典有序按插入顺序保存。d[x]vsd.get(x)前者键不存在报错后者返回None/默认值。遍历时改字典会报错pythonfor k in d: del d[k] # RuntimeError # 正确做法 for k in list(d.keys()): del d[k]十一、json.dumps/loads核心区分json.dumps()Python 对象 → JSON 字符串dump stringjson.loads()JSON 字符串 → Python 对象load string配套json.dump()/json.load()是读写文件不带 simport json1. json.dumps(obj, ...)data {name:test, num:100, list:[1,2,3]} json_str json.dumps(data) print(json_str) # 输出字符串{name:test,num:100,list:[1,2,3]} # 常用参数 json_str json.dumps( data, ensure_asciiFalse, # 中文不转unicode必加 indent2, # 格式化缩进 separators(,, :),# 紧凑模式去掉空格 sort_keysFalse # 是否按键排序 )2. json.loads(json_str)json_str {name:测试,num:100} obj json.loads(json_str) print(obj[name]) # 得到 dict类型映射表PythonJSONdictobjectlist/tuplearraystrstringint / floatnumberTruetrueFalsefalseNonenull高频坑loads 只能接收字符串不能直接传 dictdumps 输出字符串中文不加ensure_asciiFalse→\uXXXX转义JSON 里只有true/false/null不是True/False/None字符串必须是双引号单引号的字符串不是合法 JSONloads 报错# 错误单引号 json.loads({a:1}) # 正确双引号 json.loads({a:1})文件版本dump /load不带 s# 写入文件 with open(a.json,w,encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse, indent2) # 读取文件 with open(a.json,r,encodingutf-8) as f: data json.load(f)示例import json # dumps: 对象 - json字符串 d {msg:你好, ok:True, data:None} s json.dumps(d, ensure_asciiFalse, indent2) print(s) # loads: json字符串 - 对象 d2 json.loads(s) print(d2[msg])import json from typing import Any, Optional, Tuple def json_dumps(obj: Any, indent: Optional[int] None) - str: Python对象 - JSON字符串 try: return json.dumps(obj, ensure_asciiFalse, indentindent) except Exception as e: print(f[dumps error] {e}) return def json_loads(json_str: str) - Any: JSON字符串 - Python对象 try: return json.loads(json_str) except Exception as e: print(f[loads error] {e}) return None def json_dump(obj: Any, file_path: str, indent: Optional[int] None) - bool: Python对象写入json文件 :return: True成功 / False失败 try: with open(file_path, w, encodingutf-8) as f: json.dump(obj, f, ensure_asciiFalse, indentindent) return True except Exception as e: print(f[dump write file error] {e}) return False def json_load(file_path: str) - Any: 读取json文件 - Python对象 try: with open(file_path, r, encodingutf-8) as f: return json.load(f) except Exception as e: print(f[load read file error] {e}) return None # 带异常返回的版本不print适合业务上层自己处理错误 def json_dump_safe(obj: Any, file_path: str, indent: Optional[int] None) - Tuple[bool, Optional[Exception]]: try: with open(file_path, w, encodingutf-8) as f: json.dump(obj, f, ensure_asciiFalse, indentindent) return True, None except Exception as e: return False, e def json_load_safe(file_path: str) - Tuple[Any, Optional[Exception]]: try: with open(file_path, r, encodingutf-8) as f: return json.load(f), None except Exception as e: return None, e if __name__ __main__: demo_data {name: 测试, num: 99, ok: True, data: None} # dumps / loads s json_dumps(demo_data, indent2) print(s) d1 json_loads(s) print(d1[name]) # dump / load 文件 json_dump(demo_data, ./test.json, indent2) d2 json_load(./test.json) print(d2)函数速查函数作用json_dumps对象转 json 字符串json_loadsjson 字符串转对象json_dump对象写入 json 文件json_load读取 json 文件得到对象xxx_safe返回 (结果异常)不内部打印日志**对类进行序列化时 特殊处理 json.dumps(s, defaultlambda obj: obj.dict)作用defaultlambda obj: obj.__dict__当json.dumps遇到JSON 无法序列化的自定义对象自己写的 class 实例时会调用这个 default 函数把对象转为__dict__实例属性字典。import json class User: def __init__(self, name, age): self.name name self.age age u User(张三, 22) # 不加default会直接报错Object of type User is not JSON serializable s json.dumps(u, defaultlambda obj: obj.__dict__, ensure_asciiFalse, indent2) print(s)输出{ name: 张三, age: 22 }坑点高频踩只对实例属性有效类属性、property不会进__dict__拿不到class User: type human # 类属性不在__dict__ def __init__(self, name): self.name name嵌套对象依然要支持如果对象里面还有另一个自定义对象这套写法依然生效内层对象也会被交给 default取__dict__class A: def __init__(self, b): self.b b class B: def __init__(self, x): self.x x a A(B(100)) print(json.dumps(a, defaultlambda o:o.__dict__))无法处理 datetime /bytes/setdatetime、bytes、set不是 class 实例这个 lambda 处理不了会报错。示例datetime.datetime.now()丢进去依旧序列化失败递归对象循环引用直接爆栈RecursionError升级封装import json from typing import Any, Optional def json_dumps(obj: Any, indent: Optional[int] None) - str: try: return json.dumps( obj, ensure_asciiFalse, indentindent, defaultlambda o: o.__dict__ ) except Exception as e: print(f[dumps error] {e}) return 加强版 default同时兼容 datetimeimport json from datetime import datetime def json_dumps(obj: Any, indent: Optional[int] None) - str: def default_handler(o): if isinstance(o, datetime): return o.strftime(%Y-%m-%d %H:%M:%S) if hasattr(o, __dict__): return o.__dict__ raise TypeError(fObject of type {type(o)} is not JSON serializable) try: return json.dumps(obj, ensure_asciiFalse, indentindent, defaultdefault_handler) except Exception as e: print(f[dumps error] {e}) return 小对比defaultlambda obj: obj.__dict__最简适合简单 POJO 数据类自定义 default_handler可控可以分别处理 datetime、UUID 等特殊类型POJO解释POJO Plain Old Java Object直译简单老式 Java 对象现在 Python 里也借用这个叫法。一句话单纯用来装数据的类没有复杂业务逻辑、没有继承别的父类只有字段 构造方法。Java 例子原版 POJOclass User { public String name; public int age; // 只有字段、get/set没有业务方法 }Python 里对应的 POJO数据类class User: def __init__(self, name, age): self.name name self.age age 这种就是大家口头说的 Python POJO只用来承载数据不写复杂函数。这种写法只适合 POJO只有实例属性属性都是普通类型str/int/list/dict如果类里面有方法、socket、文件句柄、线程、数据库连接用__dict__序列化就炸了容易混淆的词POJO纯数据载体类无业务逻辑DTOData Transfer Object传输对象网络接口传参、返回体属于 POJO 的一种Model / Entity数据库映射实体类也属于 POJOPython 替代方案标准库 dataclassesfrom dataclasses import dataclass dataclass class User: name: str age: int也是标准 POJO同样可以用defaultlambda o:o.__dict__序列化。一句话总结POJO 纯用来装数据的 “盒子类”不干活、不包含业务逻辑。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑