12个优雅的python代码使用案例 天天报道
2023-02-14 16:00:45 程序员客栈

1. 切片

翻转字符串顺序,使用切片str[::-1]

a="HelloWorld!"print(a[::-1])"""!dlroWolleH"""


(资料图片)

切片完整的写法 str[start: end: step]

start 字符串开始的索引值

end 字符串结束的索引值

step 间隔步长,默认为1。

一般切片时,只使用start和end, 不设置step。如果step为-1,即翻转顺序倒着切片。

2. not运算符

a=[]print(nota)"""True"""

not是Python的内置关键词,一种 逻辑非的运算符。在上面的代码中, 空列表[]是一种类似False的效果, 而 not []即为真。类似的还有空字符串、空集合等空数据。

3. F-strings

first_name="John"age=19print(f"Hi,I"m{first_name}andI"m{age}yearsold!")"""Hi,I"mJohnandI"m19yearsold!"""

自3.6以来,Python新增了字符串的格式化方法,在字符串内可以调用环境中的变量。

实现上面代码的功能,还可以用字符串的format方法

first_name="John"age=19print("Hi,I"m{}andI"m{}yearsold!".format(first_name,age))"""Hi,I"mJohnandI"m19yearsold!"""

3.8以后,Python的f-string新增了如下效果

x=10y=20print(f"{x=},{y=}")"""x=10,y=20"""

4. print函数4.1 end参数

a=["english","french","spanish","german","twi"]forlanguageina:print(language,end="")"""englishfrenchspanishgermantwi"""

print函数end用于设定打印内容结尾的符号,默认换行符\n,所以在for循环使用print时候会看到内容是逐行显示的。

72. sep参数

print函数默认sep=" ",通过改变sep,打印的结果也会发生变化。

day="04"month="10"year="2022"print(day,month,year)print(day,month,year,sep="")print(day,month,year,sep="")print(day,month,year,sep=".")"""041020220410202204/10/202204.10.2022"""

5. 合并字典

a={"a":1,"b":2}b={"c":3,"d":4}a_and_b=a|bprint(a_and_b)"""{"a":1,"b":2,"c":3,"d":4}"""

3.9之后, python支持字典的 或|来合并多个字典。

6. 条件语句

condition=Trueifcondition:name="John"else:name="Doe"print(name)"""John"""

如果条件语句需要写在一行内,可以改写成

condition=Truename="John"ifconditionelse"Doe"print(name)"""John"""

7. 下划线_

下划线有以下三个常见的用处

调用最近(上一次)的运行结果

忽略不需要操作的值

定义变量名,避免与内置关键词冲突

下划线间隔的数字

7.1 调用结果

>>>print(_)Traceback(mostrecentcalllast):File"",line1,in>>>1+23>>>print(_)3

_可以调用最近上一次 操作1+1的运行 结果3。

7.2 忽略不需要的值

除此之外, 下划线 _还可用在for循环中,忽略不需要的值。

for_inrange(100):print("Theindexdoesn"tmatter")"""Theindexdoesn"tmatterTheindexdoesn"tmatter..."""

7.3 定义变量名,避免与内置关键词冲突

#避免与关键词list、global冲突list_=[0,1,2,3,4]global_="Hithere"

7.4 下划线数字

为了增加数字的可阅读性,可以在数字中加入下划线_

number=1_500_000print(type(number))print(number)"""1500000"""

8. setdefault

使用字典做词频统计时,常见实现算法

检查该关键词是否存在于字典中

如果存在, 该关键词词频加1

如果不存在,该关键词词频设为1

importpprinttext="""It"sthefirstofApril.It"sstillcoldintheUK.ButI"mgoingtothemuseumsoitshouldbeawonderfulday"""counts={}forwordintext.split():ifwordincounts:counts[word]+=1else:counts[word]=1pprint.pprint(counts)"""{"April.":1,"But":1,"I"m":1,"It"s":2,"UK.":1,"a":1,"be":1,"cold":1,"day":1,"first":1,"going":1,"in":1,"it":1,"museum":1,"of":1,"should":1,"so":1,"still":1,"the":3,"to":1,"wonderful":1}"“”

实际上,使用字典的setdefault方法,可以起到ifelse判断的作用。

counts={}forwordintext.split():counts.setdefault(word,0)counts[word]+=1

9. lambda函数

lambda函数更简洁,可以在一行代码内定义一个简洁的函数。

defsquare(num:int)->int:returnnum**2print(f"Functioncall:{square(4)}")"""Functioncall:16"""square_lambda=lambdax:x**2print(f"Lambdafunction:{square_lambda(4)}")"""Lambdafunctional:16"""

10. Try-Except

写代码的时候,经常会遇到报错,例如分母为0

defget_ration(x:int,y:int)->int:ratio=x/yratio=x/yreturnratioprint(get_ratio(x=400,y=0))"""---------------------------------------------------------------------------NameErrorTraceback(mostrecentcalllast)in4returnratio5---->6print(get_ratio(x=400,y=0))NameError:name"get_ratio"isnotdefined"""

可以使用try except包裹住 "小错误",并对可能出错的地方进行微调,来忽略错误。

defget_ration(x:int,y:int)->int:try:ratio=x/yexcept:ZeroDivisionError:y=y+1ratio=x/yreturnratioprint(get_ratio(x=400,y=0))"""400.0"""

11. Args&Kwargs

defsome_function(*args,**kwargs):print(f"Args:{args}")print(f"Kwargs:{kwargs}")some_function(1,2,3,a=4,b=5,c=6)"""Args:(1,2,3)Kwargs:{"a":4,"b":5,"c":6}"""

使用*arg可以让函数传入任意多个参数,而**kwarg可以让函数传入任意多个键值对。

12. 列表推导式

even_numbers=[]forxinrange(10):#%取余数ifx%2==0andx!=0:even_numbers.append(x)print(even_numbers)"""[2,4,6,8]"""

实现同样功能,列表推导式只需要一行

even_numbers=[xforxinrange(10)ifx%2==0andx!=0]print(even_numbers)"""[2,4,6,8]"""

精选文章

管理世界 | 使用文本分析词构建并测量短视主义

管理世界 | 使用 「经营讨论与分析」 测量「企业数字化指标」

支持开票 | Python实证指标构建与文本分析

PNAS | 文本网络分析&文化桥梁Python代码实现

PNAS | 使用语义距离测量一个人的「创新力(发散思维)得分」

MS | 使用网络算法识别『创新的颠覆性与否』

金融研究 | 文本相似度计算与可视化

金融研究 | 使用Python构建「关键审计事项信息含量」

视频分享 | 文本分析在经管研究中的应用

转载 | 金融学文本大数据挖掘方法与研究进展

文本分析 |「MD&A信息含量」指标构建代码实现

可视化 | 绘制《三体》人物关系网络图

长期征稿 | 欢迎各位前来投稿

17G数据集| 深交所企业社会责任报告

70G数据集| 上市公司定期报告数据集

27G数据集 | 使用Python对27G招股说明书进行文本分析

数据集 | 585w企业工商注册信息

数据集 | 90w条中国上市「公司高管数据」

可视化 | 绘制《三体》人物关系网络图

认知的测量 | 向量距离vs语义投影

Asent库 | 英文文本数据情感分析

tomotopy | 速度最快的LDA主题模型

100min视频 | Python文本分析与会计

安装python包出现报错:Microsoft Visual 14.0 or greater is required. 怎么办?

如何正确读入文本数据不乱码(解决文本乱码问题)

Faker库 | 生成实验数据

使用R语言绘制文本数据情感历时趋势图

NiceGUI库 | 简单易懂的Web GUI开发包;可开发数据标注工具、心理学实验工具等

CheatSheet | Python文本数据处理速查表

pandas | 使用 df.query 字符串表达式进行数据筛选

相关新闻: