100 个必须掌握的 Python 数据类型操作技巧,建议收藏!
大家好我是花姐,这几天花时间整理出了一份超实用的100个Python操作各种数据类型的小技巧,涵盖了字符串、列表、元组、字典、集合、数字类型、布尔值、NoneType、日期、类型转换等日常开发中最常用的数据类型。
字符串(str)技巧
str.upper()/str.lower():大小写转换str.title():标题化字符串(每个词首字母大写)str.strip()/lstrip()/rstrip():去空格str.replace('a', 'b'):字符串替换str.split(','):分割字符串为列表','.join(list):列表拼接为字符串str.startswith('a')/endswith('z'):判断开头/结尾str.find('sub'):返回子串索引,不存在返回 -1str.count('a'):统计字符出现次数- f-string 格式化:
f"Hello {name}"
列表(list)技巧
lst.append(x):追加元素lst.extend([1,2]):批量追加lst.insert(1, 'x'):指定位置插入lst.pop()/lst.pop(0):弹出元素lst.remove(x):移除第一个匹配元素lst.sort()/lst.sort(reverse=True):排序sorted(lst):返回新排序列表lst.reverse():原地反转[x for x in lst if x > 0]:列表推导式list(set(lst)):去重
元组(tuple)技巧
t = (1,):单元素元组别忘了逗号tuple(lst):列表转元组a, b = (1, 2):元组拆包for i, val in enumerate(tpl):遍历带索引tpl.count(1)/tpl.index(1):计数、索引
字典(dict)技巧
dict.get('key', 'default'):避免 key 错误dict.setdefault(k, v):如果没 key 就设值dict.update({'k': v}):批量更新dict.items():键值对遍历dict.keys()/dict.values():遍历 key / value{k: v for k, v in dict.items() if v > 0}:字典推导式del dict['key']:删除键fromkeys(['a', 'b'], 0):批量初始化Counter(lst):统计元素频次(from collections)json.loads()/json.dumps():字典和JSON互转
数字类型(int, float, complex)
round(3.1415, 2):保留2位小数abs(-9):绝对值divmod(7, 3):商和余数pow(2, 3):幂运算math.sqrt(9):开平方random.randint(1,10):生成随机整数float('inf')/-float('inf'):无穷大isinstance(x, int):类型检查decimal.Decimal('0.1'):高精度浮点数bin(10), oct(10), hex(10):进制转换
布尔类型(bool)
bool([])/bool(''):空对象为 Falseall([True, True])/any([False, True])not逻辑取反- 三元表达式:
x if cond else y assert condition, "Error":断言调试用
NoneType
if x is None:检查是否为 Nonex = y or 'default':简洁的空值替代x = y if y is not None else z:显式替代filter(None, iterable):过滤掉 None 值my_dict.get('key') is not None:防止误判 0
集合(set)技巧
set([1,2,2]):自动去重a & b:交集a | b:并集a - b:差集a ^ b:对称差a.issubset(b)/a.issuperset(b)set.add(x)/set.remove(x)/discard(x)set.pop():随机弹出一个元素frozenset():不可变集合len(set(x)) == len(x):快速判重
日期时间(datetime)
datetime.now():当前时间datetime.strptime('2023-01-01', '%Y-%m-%d'):字符串转日期datetime.strftime('%Y-%m-%d'):日期转字符串timedelta(days=7):时间差date.today():当前日期(end - start).days:天数差calendar.monthrange(2023, 2):获取月天数datetime.timestamp()/fromtimestamp()datetime.replace():替换时间字段pytz时区处理(需额外安装)
类型转换技巧
int('123')/float('3.14')/str(123)list('abc'):字符串转列表dict([('a', 1)]):列表转字典tuple([1,2,3]):列表转元组set([1,2,3]):列表转集合ord('A')/chr(65):字符与 ASCII 转换bytes('abc', 'utf-8')/.decode()eval("1+2"):字符串转表达式(⚠️慎用)repr(obj):对象的表示字符串isinstance(x, (list, tuple)):类型组检查
其他
enumerate(lst):带索引的遍历zip(lst1, lst2):并行遍历map(str, lst):映射操作filter(lambda x: x>0, lst):条件筛选reduce(lambda x,y: x+y, lst):聚合计算(from functools)sorted(lst, key=lambda x: x[1]):按第二个元素排序collections.defaultdict(list):自动初始化copy.deepcopy(obj):深拷贝next(iter(lst)):安全地取第一个元素slice(1,5,2):切片对象
进阶一点的玩法
namedtuple('Point', ['x', 'y'])itertools.combinations(lst, 2):组合chain.from_iterable():扁平化多层列表heapq.heappush()/heappop():堆操作globals()/locals():查看变量上下文
好啦,这就是今天为大家整理的 100 条 Python 数据类型操作技巧!是不是有不少技巧你以前没注意到,或者一直用错了?
如果你觉得这份清单有用,点个赞 ➕ 转发给身边的 Pythoner 一起进步!