Python-盘点那些鲜为人知的Python骚操作
Python的学习过程中(尤其是数据结构和算法),我们常常会遇到对数据进行质数(素数)判断的编程需要。split函数的功能恰恰与join函数相反(它的分割对象是字符串,返回的结果为列表):可以很方便的拆分我们想要拆分的字符串,不需要我们一个一个的拆分了(它的默认分割参数为空格)。join函数可以很方便的连接我们想要连接的字符串(它的连接对象为列表,返回结果为字符串),不需要我们利用加号一个一个的相
前言:在学习Python的过程中,我们常常会接触到有关Python的部分隐藏的"特异功能"。它们能够帮助我们利用比常规方式快捷多得多的速度完成指定任务。作为一个Python爱好者,你是否也想了解一下Python有哪些小白很少知道的骚操作呢?那么话不多说,我们直接开启今天的Python学习之路。
一:利用内置函数双向转换ASCII码字符和十进制数字
Python小白常常会苦恼ASCII码字符与十进制数字间的转换。其实,在Python中,是有内置函数帮助我们进行相互转换的:ord和chr。
ord将ASCII码字符转换为对应的十进制数字(如下所示)。
a='a'
print(ord(a))
运行结果:
97
chr将十进制数字转换为对应的ASCII码字符(如下所示)。
a=98
print(chr(a))
运行结果:
b
二:二进制,八进制,十进制,十六进制的相互转换
Python中同样有二进制,十进制,十六进制转换的内置函数。它们分别是bin,oct,int,和hex。其中bin,oct,hex函数接受的是十进制数字,int则可以接受任意进制的数字。
1,int(x,base)
x为base进制的数字,int(x,base)将把x从base进制的数字转换为十进制的数字。(如下所示)
a='1011'
print(int(a,2))
运行结果:
11
2,bin(x)
x为十进制的数字,bin(x)将把x转换为二进制的数字。(如下所示)
a=10
print(bin(a))
运行结果:
0b1010
('0b'是前缀,表示后面的数字是二进制的)
3,oct(x)
x为十进制的数字,oct(x)将把x转换为八进制的数字。(如下所示)
a=10
print(oct(a))
运行结果:
0o12
(同上,'0o'是前缀,表示后面的数字是八进制的)
4,hex(x)
x为十进制的数字,hex(x)将把x转换为十六进制的数字。(如下所示)
a=10
print(hex(a))
运行结果:
0xa
(同上,'0x'是前缀,表示后面的数字是十六进制的)
三:import this-见Python格言
"import this"事实上并不是导入"this"库(其实Python也没有这个库),它是Python诞生的初衷以及追求,表现了Python社区对Python作为一个编程语言达成的一个追求人性化的集体共识。(如下所示)
import this
运行结果:
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
四:循环列表-[]*n
Python学习的过程中,我们可能会遇到需要创建循环列表的需要(即内容的部分具有重复性的列表)。这个时候,我们就可以利用快捷方式来实现,即:[a,b,c]*n=n个[a,b,c]相连。(如下所示)
1,简单拼接
a=[1,2,3]
print(a*3)
运行结果:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
2:列表嵌套
a=[1,1,2]
b=[3,2,2]
for i in range(3):
a.append(b[0:2]*3)
print(a)
运行结果:
[1, 1, 2, [3, 2, 3, 2, 3, 2], [3, 2, 3, 2, 3, 2], [3, 2, 3, 2, 3, 2]]
五:字符类型判断
Python学习时时常需要我们判断字符类型,以便对不同类型的字符作出对应的处理。(如下所示)
s为一个字符串:
s.isalnum() 判断字符串否是数字或字母。
s.isalpha() 判断字符串是否为纯字母。
s.isdigit() 判断字符串是否为纯数字。
s.islower() 判断字符串中字母是否为纯小写字母(字符串中可以包含数字,返回为True)。
s.isupper() 判断字符串中字母是否为纯大写字母(字符串中可以包含数字,返回为True)。
s.isspace() 判断字符是否为空格,其中换行符(\n)、回车符(\r)、换页符(\f)均返回True。
s.istitle() 判断字符串为纯字母,且第一个字母是否为大写字母。
s.istitle() 判断字符串中所有字符是否均为ASCII。
a='a'
print(a.islower())
运行结果:
True
a='a123'
print(a.isdigit())
运行结果:
False
六:eval函数进行四则运算
事实上,eval函数可不仅能够将字符串强制转换为可计算数值,它还有一个神奇的隐密功能-对字符串进行四则运算等。只是可惜的是这种方法有些时候虽然接近正确结果,但并不准确。(如下所示)
a='1+2*3/4*7-2'
print(eval(a))
运行结果:
9.5
甚至带括号等的高级运算也能实现(如下所示)
a='(3+2)*4+3/2-1'
print(eval(a))
运行结果:
20.5
a='2**3+7%3-4//3+11-5'
print(eval(a))
运行结果:
14
七:join函数连接字符串与split拆分字符串
1,join函数
join函数可以很方便的连接我们想要连接的字符串(它的连接对象为列表,返回结果为字符串),不需要我们利用加号一个一个的相连了。(如下所示)
a=['1','2','3','4']
print(''.join(a))
运行结果:
1234
它甚至可以在连接字符串的同时插入其它字符串。(如下所示)
a=['1','2','3','4']
print('+'.join(a))
运行结果:
1+2+3+4
2,split函数
split函数的功能恰恰与join函数相反(它的分割对象是字符串,返回的结果为列表):可以很方便的拆分我们想要拆分的字符串,不需要我们一个一个的拆分了(它的默认分割参数为空格)。(如下所示)
a='1234 3456'
print(a.split())
运行结果:
['1234', '3456']
当然,它的默认分割参数同样也是可以自定义的。(如下所示)
a='1,2,3,4,5,6'
print(a.split(','))
运行结果:
['1', '2', '3', '4', '5', '6']
八:逗号相隔,先后执行
Python中功能函数的执行其实并不一定只能靠垂直方向上的先后关系来表现,逗号同样能实现这个功能。(如下所示)
def a():
print(1)
def b():
print(0)
a(),b()
print(1),print(0)
运行结果:
1
0
1
0
九:内置函数判断质数(素数)
Python的学习过程中(尤其是数据结构和算法),我们常常会遇到对数据进行质数(素数)判断的编程需要。然而自己编写的算法的话不仅影响运行速度,也浪费时间。因此,内置函数无疑是最好的选择,而Python中确实有这么一个内置函数-sympy中的isprime方法。(如下所示)
import sympy
s=[]
for i in range(101):
if sympy.isprime(i):
s.append(i)
print(s)
运行结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
Ok,本篇文章就到此结束啦!
我是闪云-微星,期待你的交流指教,我们下期不见不散!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)