python 常用技巧
简介
在实际项目或者面试中会遇到一些常用的python小技巧,其实就是所谓的内置模块,方便了开发。
字符串倒转
s = 'ASDFGH'
print(s[-1::-1])
print(s[::-1])
HGFDSA
HGFDSA
英文单词的首字母大写
data = 'my name is tom'
print(data.title())
print(data)
My Name Is Tom
my name is tom
字符串去重
不按照顺序显示
data = 'aaasssssaafffeffgrtgssffg'
print(''.join(set(data)))
sertfga
按照第一次出现顺序显示
方法一:使用遍历添加到列表
data = 'aaasssssaafffeffgrtgssffg'
ret = []
for item in data:
if ret.count(item) == 0:
ret.append(item)
print(''.join(ret))
asfegrt
方法二:使用set,再使用sort根据key值的索引进行排序
data = 'aaasssssaafffeffgrtgssffg'
data_list = list(data)
lists = list(set(data_list))
print(lists)
lists.sort(key=data_list.index)
print(lists)
print(''.join(lists))
['s', 'f', 'g', 'a', 'e', 'r', 't']
['a', 's', 'f', 'e', 'g', 'r', 't']
asfegrt
字符串拆分
普通字符串拆分
data = 'hello, everyone, world\nhello, everyone, world'
print(data.split(','))
# 以换行符为分割,默认不显示换行符
print(data.splitlines())
print(data.splitlines(True))
['hello', ' everyone', ' world\nhello', ' everyone', ' world']
['hello, everyone, world', 'hello, everyone, world']
['hello, everyone, world\n', 'hello, everyone, world']
路径拆分
import os
path = os.path.join(os.path.dirname(__file__), 'test.text')
# 分割文件后缀名
print(os.path.splitext(path))
# 以系统平台分割
print(path.split(os.sep))
('/home/ts/flask_study/python常用技巧/test', '.text')
['', 'home', 'ts', 'flask_study', 'python常用技巧', 'test.text']
字符串连接
l = ['my', 'name', 'is', 'tom']
print(' '.join(l))
my name is tom
查看列表中各元素的个数
words = [
"look", "into", "my", "eyes", "look", "into", "my", "eyes",
"the", "eyes", "the", "eyes", "the", "eyes", "the", "eyes",
"my", "eyes", "you're", "under", "my", "eyes", "you're", "under"
]
# 使用collection的counter
from collections import Counter
ret = Counter(words)
print(ret)
# 次数出现最多的前三个
print(ret.most_common(3))
# 查看ret的所有的数量
print(sum(ret.values()))
# 列表推导式/列表生成式
ret = [(item,words.count(item)) for item in words]
print(set(ret))
Counter({'eyes': 8, 'my': 4, 'the': 4, 'look': 2, 'into': 2, "you're": 2, 'under': 2})
[('eyes', 8), ('my', 4), ('the', 4)]
24
{("you're", 2), ('look', 2), ('my', 4), ('into', 2), ('eyes', 8), ('under', 2), ('the', 4)}
两字典合并
dict_1 = {'apple': 9, 'banana': 6}
dict_2 = {'grape': 4, 'orange': 8}
# 将字典解包成对应元素并进行合成
combined_dict = {**dict_1, **dict_2}
print(combined_dict)
# 使用自带的update
print(dict_1.update(dict_2))
print(dict_1)
# 并集
print(dict(dict_1.items() | dict_2.items()))
# 交集,只显示最后
print(dict(dict_1.items() & dict_2.items()))
{'apple': 9, 'banana': 6, 'grape': 4, 'orange': 8}
None
{'apple': 9, 'banana': 6, 'grape': 4, 'orange': 8}
{'banana': 6, 'orange': 8, 'apple': 9, 'grape': 4}
{'grape': 4, 'orange': 8}
列表的扁平化
一个列表中有多个列表嵌套。
使用第三方模块iteration_utilities
from iteration_utilities import deepflatten
l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]]
print(list(deepflatten(l, depth=3)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
递归获取
l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]]
def unfold_list(list_data):
for item in list_data:
if isinstance(item, list):
yield from unfold_list(item)
else:
yield item
print(list(unfold_list(l)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
查看列表当中是否存在重复值
l1 = [1,2,3,4]
l2 = [2,2,1,3]
l3 = [1,2,3,3]
def unique(l):
return not len(l) == len(set(l))
def unique2(l):
for item in l:
if l.count(item) > 1:
return True
return False
import time
start = time.time()
print(unique(l1))
print(unique(l2))
print(unique(l3))
print(time.time() - start)
start = time.time()
print(unique2(l1))
print(unique2(l2))
print(unique2(l3))
print(time.time() - start)
False
True
True
2.2172927856445312e-05
False
True
True
6.67572021484375e-06
数组的转置
array = [['a', 'b'], ['c', 'd'], ['e', 'f']]
print(*array)
print(list(zip(*array)))
['a', 'b'] ['c', 'd'] ['e', 'f']
[('a', 'c', 'e'), ('b', 'd', 'f')]
获取两个列表的不同元素
l1 = [1,2,3,4]
l2 = [2,2,1,3,5]
print(set(l1).difference(set(l2)))
print(set(l2).difference(set(l1)))
print(set(l1).difference(set(l2)) | set(l2).difference(set(l1)))
{4}
{5}
{4, 5}
将两列表变成键值对
l1 = ['A','B','C','D']
l2 = [2,2,1,3]
print(dict(zip(l1,l2)))
{'A': 2, 'B': 2, 'C': 1, 'D': 3}
对字典进行排序,根据键、值
d = {'apple': 9, 'grape': 4, 'banana': 6, 'orange': 8}
# 以键排序
print(dict(sorted(d.items(), key=lambda d:d[0])))
# 以值排序
print(dict(sorted(d.items(), key=lambda d:d[1])))
import operator
# 以键排序
# operator.itemgetter获取第一个下标的元素
print(dict(sorted(d.items(), key=operator.itemgetter(0))))
# 以值排序
print(dict(sorted(d.items(), key=operator.itemgetter(1))))
{'apple': 9, 'banana': 6, 'grape': 4, 'orange': 8}
{'grape': 4, 'banana': 6, 'orange': 8, 'apple': 9}
{'apple': 9, 'banana': 6, 'grape': 4, 'orange': 8}
{'grape': 4, 'banana': 6, 'orange': 8, 'apple': 9}
列表中最大/最小值的索引
list1 = [20, 30, 50, 70, 90]
def max_index(list_test):
return max(range(len(list_test)), key = list_test.__getitem__)
def min_index(list_test):
return min(range(len(list_test)), key = list_test.__getitem__)
print(max_index(list1))
print(min_index(list1))
4
0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现