Python中有哪些常用操作?这20个你都会吗
Python 是一个解释型语言,可读性与易用性让它越来越热门。
正如 Python 之禅中所述:
优美胜于丑陋,明了胜于晦涩。
在你的日常编码中,以下技巧可以给你带来意想不到的收获。
1、字符串反转
下面的代码片段,使用 Python 中 slicing 操作,来实现字符串反转:
# Reversing a string using slicingmy_string = "ABCDE"
reversed_string = my_string[::-1]print(reversed_string)# Output
# EDCBA
2、首字母大写
下面的代码片段,可以将字符串进行首字母大写,使用的是 String 类的 title() 方法:
my_string = "my name is chaitanya baweja"# using the title() function of string class
new_string = my_string.title()print(new_string)# Output
# My Name Is Chaitanya Baweja
3、取组成字符串的元素
下面的代码片段,可以用来找出一个字符串中所有组成他的元素,我们使用的是 set 中只能存储不重复的元素 这一特性:
my_string = "aavvccccddddeee"# converting the string to a set
temp_set = set(my_string)# stitching set into a string using join
new_string = ''.join(temp_set)print(new_string)# Output
# acedv
4、重复输出String/List
可以对 String/List 进行乘法运算,这个方法,可以使用它们任意倍增。
n = 3 # number of repetitions
my_string = "abcd"
my_list = [1,2,3]print(my_string*n)
# abcdabcdabcdprint(my_string*n)
# [1,2,3,1,2,3,1,2,3]
有一个很有意思的用法,定义包含n个常量的列表:
n = 4
my_list = [0]*n # n 表示所需列表的长度
# [0, 0, 0, 0]
5、列表推导式
列表推导式提供了一种更优雅的方式处理列表。以下代码片段中,将旧列表中的元素乘以2来创建新的列表:
original_list = [1,2,3,4]new_list = [2*x for x in original_list]print(new_list)
# [2,4,6,8]
6、交换两个变量值
Python 交换两个变量的值不需要创建一个中间变量,很简单就可以实现:
a = 1
b = 2a, b = b, aprint(a) # 2
print(b) # 1
7、字符串拆分
使用 split() 方法可以将一个字符串拆分成多个子串,你也可以将分割符作为参数传递进行,进行分割。
string_1 = "My name is Chaitanya Baweja"
string_2 = "sample/ string 2"# default separator ' '
print(string_1.split())
# ['My', 'name', 'is', 'Chaitanya', 'Baweja']# defining separator as '/'
print(string_2.split('/'))
# ['sample', ' string 2']
8、字符串拼接
join()方法可以将字符串列表组合成一个字符串,下面的代码片段中,我使用,将所有的字符串拼接到一起:
list_of_strings = ['My', 'name', 'is', 'Chaitanya', 'Baweja']# Using join with the comma separator
print(','.join(list_of_strings))# Output
# My,name,is,Chaitanya,Baweja
9、回文检测
在前面,我们已经说过了,如何翻转一个字符串,所以回文检测非常的简单:
my_string = "abcba"if my_string == my_string[::-1]:print("palindrome")
else:print("not palindrome")# Output
# palindrome
10、元素重复次数
在Python中,有很多方法可以做这件事情,但是我最喜欢的还是 Counter 这个类。Counter会计算每一个元素出现的次数,Counter()会返回一个字典,元素作为key,出现的次数作为 value。我们也可以使用 most_common() 这个方法来获取出现字数最多的元素。
from collections import Countermy_list = ['a','a','b','b','b','c','d','d','d','d','d']
count = Counter(my_list) # defining a counter objectprint(count) # Of all elements
# Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1})print(count['b']) # of individual element
# 3print(count.most_common(1)) # most frequent element
# [('d', 5)]
11、变位词使用
Counter的一个很有意思的用法是找变位词:变位词一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词。使用 Counter 得到的两个对象如果相等,则他们是变位词:
from collections import Counterstr_1, str_2, str_3 = "acbde", "abced", "abcda"
cnt_1, cnt_2, cnt_3 = Counter(str_1), Counter(str_2), Counter(str_3)if cnt_1 == cnt_2:print('1 and 2 anagram')
if cnt_1 == cnt_3:print('1 and 3 anagram')
12、try-except-else
在Python中,使用 try-except 进行异常捕获。else 可用于当没有异常发生时执行。如果你需要执行一些代码,不管是否发生过异常,请使用 final:
a, b = 1,0try:print(a/b)# exception raised when b is 0
except ZeroDivisionError:print("division by zero")
else:print("no exceptions raised")
finally:print("Run this always")
13、枚举遍历
下面的代码片段中,遍历列表中的值和对应的索引:
my_list = ['a', 'b', 'c', 'd', 'e']for index, value in enumerate(my_list):print('{0}: {1}'.format(index, value))# 0: a
# 1: b
# 2: c
# 3: d
# 4: e
14、对象使用内存大小
下面的代码片段展示了,如何获取一个对象所占用的内存大小:
import sysnum = 21print(sys.getsizeof(num))# In Python 2, 24
# In Python 3, 28
15、合并两个字典
在 Python 2 中,使用 update() 方法来合并,在 Python 3.5 中,更加简单,在下面的代码片段中,合并了两个字典,在两个字典存在交集的时候,则使用后一个进行覆盖。
dict_1 = {'apple': 9, 'banana': 6}
dict_2 = {'banana': 4, 'orange': 8}combined_dict = {**dict_1, **dict_2}print(combined_dict)
# Output
# {'apple': 9, 'banana': 4, 'orange': 8}
16、代码执行时间
下面的代码片段中,使用了 time 这个库,来计算代码执行的时间:
import timestart_time = time.time()
# Code to check follows
a, b = 1,2
c = a+ b
# Code to check ends
end_time = time.time()
time_taken_in_micro = (end_time- start_time)*(10**6)print(" Time taken in micro_seconds: {0} ms").format(time_taken_in_micro)
17、列表展开
有时候,你不知道你当前列表的嵌套深度,但是你希望把他们展开,放到一维的列表中。下面教你实现它:
from iteration_utilities import deepflatten# if you only have one depth nested_list, use this
def flatten(l):return [item for sublist in l for item in sublist]l = [[1,2,3],[3]]
print(flatten(l))
# [1, 2, 3, 3]# if you don't know how deep the list is nested
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]
Numpy flatten 可以更好的处理你格式化好的数据。
18、随机取样
下面的例子中,使用 random 库,实现了从列表中随机取样。
import randommy_list = ['a', 'b', 'c', 'd', 'e']
num_samples = 2samples = random.sample(my_list,num_samples)
print(samples)
随机取样,我推荐使用 secrets 库来实现,更安全。下面的代码片段只能在 Python 3 中运行:
##学习中遇到问题没人解答?小编创建了一个Python学习交流群:309488165
import secrets # imports secure module.
secure_random = secrets.SystemRandom() # creates a secure random object.my_list = ['a','b','c','d','e']
num_samples = 2samples = secure_random.sample(my_list, num_samples)print(samples)
19、数字化
下面代码将一个整形数转成一个数字化的对象:
num = 123456list_of_digits = list(map(int, str(num)))print(list_of_digits)
# [1, 2, 3, 4, 5, 6]
20、唯一性检查
下面的代码示例,可以检查列表中的元素是否是不重复的:
def unique(l):if len(l)==len(set(l)):print("All elements are unique")else:print("List has duplicates")unique([1,2,3,4])
# All elements are uniqueunique([1,1,2,3])
# List has duplicates
相关文章:
Python中有哪些常用操作?这20个你都会吗
Python 是一个解释型语言,可读性与易用性让它越来越热门。 正如 Python 之禅中所述: 优美胜于丑陋,明了胜于晦涩。 在你的日常编码中,以下技巧可以给你带来意想不到的收获。 1、字符串反转 下面的代码片段,使用 P…...

【LeetCode】剑指 Offer(4)
目录 写在前面: 题目:剑指 Offer 10- I. 斐波那契数列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 10- II. …...

庄懂的TA笔记(十二)<>
庄懂的TA笔记(十二)<>一、作业展示,答疑:1、作业:2、答疑:二、作业示范,分析:1、文档分析:2、资源分析:3、资源优化:4、光…...
学分绩点(2023寒假每日一题 5)
北京大学对本科生的成绩施行平均学分绩点制(GPA)。 既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75…...

Framework学习之旅:Zygote进程
概述 在Android系统中,DVM(Dalvik 虚拟机和ART、应用程序进程以及运行系统的关键服务SystemServer进程都是由Zygote进程来创建的。通过fork(复制进程)的形式来创建应用程进程和SystemServer进程,由于Zygote进程在启动时会创建DVM…...

HTTP基础知识
关键字:一问一答用于和服务器交互什么是HTTPHTTP是个应用层协议,是HTTP客户端和HTTP服务器之间的交互数据格式。所以这里有个实例:在浏览网页的时候,浏览器会向服务器发送一个HTTP请求,告诉服务器我想访问什么..然后服…...

Delphi 10.4.2使用传统代码提示方案(auto complete)(转)
Delphi 10.4重点是实现了LSP,但现在最新的10.4.2还是不成熟,无法满足日常需要,不过没关系,可以设置为原有的方案,如下图:具体操作:Tools->Options->Editor->language->Code Insight…...
存储类别、链接与内存管理(三)
1、malloc函数详解 (1)函数声明 #include <stdlib.h> void* malloc(size_t size);malloc可以申请一定数量的空闲内存,这样的内存是匿名的,也就是malloc不会为其赋名,但是确实返回动态分配内存块的首元素地址&a…...

Java:Linux(CentOS)安装、配置及相关命令
目录一、VMware安装二、CentOS安装1、安装过程2、加载ISO2.1 桌面的设置三、VI/VIM编辑器1、一般模式2、编辑模式3、命令模式4、模式间转换四、网络配置和系统管理操作1、配置子网IP和网关2、配置虚拟机ip地址2.1 ifconfig 查询ip地址2.2 修改IP地址3、配置主机名3.1 hostname …...
Linux 操作系统原理 — 多任务优先级调度策略
目录 文章目录 目录多任务优先级调度策略User Process 调度策略配置调整 User Process 的优先级调整非实时进程的优先级调整实时进程优先级调整 User Process 的调度算法多任务优先级调度策略 在 Linux Kernel 中,Kernel Thread 作为唯一的调度实体,Kernel Scheduler(调度程…...
链表学习之找到两个链表相交的第一个节点
链表解题技巧 额外的数据结构(哈希表);快慢指针;虚拟头节点; 找到两个链表相交的第一个节点 给定两个链表,这两个链表可能有环,可能无环。判断这两个链表是否相交,相交则返回第一…...

【Kubernetes】【十一】Pod详解 Pod的生命周期
Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main container) 容器启动后钩子&#…...
Connext DDS录制服务 Recording Service(1)
1 序言 1.1 简介 RTI记录服务包括以下工具: •记录服务,一种RTI Connext DDS应用程序,用于记录主题和发现数据。记录服务记录数据更新以及时间戳,因此您可以查看或回放系统中随时间发生的数据更新。默认情况下,记录的数据存储在SQLite文件中。录制服务还具有一个API,用于…...

vTESTstudio - VT System CAPL Functions - VT2004(续2)
不要沮丧,不必惊慌,做努力爬的蜗牛或坚持飞的笨鸟,我们试着长大,一路跌跌撞撞,哪怕遍体鳞伤。vtsSetPWMVoltageLow - 设置PWM输出上的低电压功能:指定数字输出信号(尤其是PWM信号)输…...

每天一个linux命令---awk
awk命令 1. 简介 awk是一种处理文本文件的语言,是一个强大的文本分析工具,grep、sed、awk并称为shell中文本处理的三剑客。 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&am…...
Open3D 点云旋转之轴角式(Python版本)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 三维空间中表示旋转的方法有很多种,轴角式是其中非常经典的一种表示方式。虽然欧拉角表示旋转的方法很是常用,但欧拉角存在着万向锁这个问题,因此轴角式旋转在旋转使用中更为合适。其原理也很是明了,如下所述:…...

Error: Timeout trying to fetch resolutions from npm
文章目录问题描述【最终解决】我搜索到的解决方案npmjs 该依赖各版本列表及对应的被下载次数github issue 说降级到0.0.3就可以正常运行了SOF 也说降级别到0.0.3问题描述 在项目里用到了 "preinstall": "npx npm-force-resolutions"配置,在一台…...

Python基础3
目录 1. 函数多返回值 2. 函数多种传参方式 3. 匿名函数 3.1 函数作为参数传递 3.2 lambda匿名函数 4. 文件的读取操作 4.1 open()打开函数 4.2 读操作方法 4.3 文件的写入 4.4 文件的追加 5. 异常的捕获方法 5.1 捕获常规异常 5.2 捕获指定…...
高可用集群(HAC)
1、高可用集群keepalive说明 高可用定义: 目的:尽可能的提高服务的可用性 99%、99.9%、99.99%、99.999% 实现原理:心跳检测服务: 有状态: MySQL 无状态: apacheLVS Keepalive原理 案例环境专为 LVS和…...

python基于django微信小程序的适老化老人健康预警小程序
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, 适老化老人健康预警微信小程序就是信息时代变革中的产物之一。 任何系统都要遵…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...