12个优雅的 python 代码使用案例
文章目录
- 1. 切片
- 2. not运算符
- 3. F-strings
- 4. print函数
- 4.1 end参数
- 4.2. sep参数
- 5. 合并字典
- 6. 条件语句
- 7. 下划线
- 7.1 调用结果
- 7.2 忽略不需要的值
- 7.3 定义变量名,避免与内置关键词冲突
- 7.4 下划线数字
- 8. setdefault
- 9. lambda函数
- 10. Try-Except
- 11. Args&Kwargs
- 12. 列表推导式
上一篇文章:整理了上千个 Python 工具库,涵盖24个大方向
没想到火了,喜欢除了收藏外,记得点赞。
今天我们分享12个非常实用的技巧
1. 切片
翻转字符串顺序,使用切片str[::-1]
a = "Hello World!"
print(a[::-1])"""
!dlroW olleH
"""
切片完整的写法 str[start: end: step]
start 字符串开始的索引值
end 字符串结束的索引值
step 间隔步长,默认为1。
一般切片时,只使用start和end, 不设置step。如果step为-1,即翻转顺序倒着切片。
2. not运算符
a = []
print(not a)"""
True
"""
not是Python的内置关键词,一种 逻辑非
的运算符。在上面的代码中, 空列表[]
是一种类似False的效果, 而 not []
即为真。类似的还有空字符串、空集合等空数据。
3. F-strings
first_name = "John"
age = 19print(f"Hi, I'm {first_name} and I'm {age} years old!")"""
Hi, I'm John and I'm 19 years old!
"""
自3.6以来,Python新增了字符串的格式化方法,在字符串内可以调用环境中的变量。
实现上面代码的功能,还可以用字符串的format方法
first_name = "John"
age = 19print("Hi, I'm {} and I'm {} years old!".format(first_name, age))"""
Hi, I'm John and I'm 19 years old!
"""
3.8以后,Python的f-string新增了如下效果
x = 10
y = 20
print(f"{x = }, {y = }")"""
x = 10, y = 20
"""
4. print函数
4.1 end参数
a = ["english", "french", "spanish", "german", "twi"]
for language in a:print(language, end=" ")"""
english french spanish german twi
"""
print函数end用于设定打印内容结尾的符号,默认换行符\n
,所以在for循环使用print时候会看到内容是逐行显示的。
4.2. 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 = ".")"""
04 10 2022
04 10 2022
04/10/2022
04.10.2022
"""
5. 合并字典
a = {"a": 1, "b": 2}
b = {"c": 3, "d": 4}a_and_b = a | b
print(a_and_b)"""
{"a": 1, "b": 2, "c": 3, "d": 4}
"""
3.9之后, python支持字典的 或|
来合并多个字典。
6. 条件语句
condition = True
if condition:name = "John"
else:name = "Doe"print(name)
"""
John
"""
如果条件语句需要写在一行内,可以改写成
condition = True
name = "John" if condition else "Doe"print(name)"""
John
"""
7. 下划线
下划线有以下三个常见的用处
调用最近(上一次)的运行结果
忽略不需要操作的值
定义变量名,避免与内置关键词冲突
下划线间隔的数字
7.1 调用结果
>>> print(_)
Traceback (most recent call last):File "<stdin>", line 1, in <module>>>> 1 + 2
3>>> print(_)
3
_
可以调用最近上一次 操作1+1
的运行 结果3
。
7.2 忽略不需要的值
除此之外, 下划线 _
还可用在for循环中,忽略不需要的值。
for _ in range(100):print("The index doesn't matter")"""
The index doesn't matter
The index doesn't matter
...
"""
7.3 定义变量名,避免与内置关键词冲突
#避免与关键词list、global冲突
list_ = [0, 1, 2, 3, 4]
global_ = "Hi there"
7.4 下划线数字
为了增加数字的可阅读性,可以在数字中加入下划线_
number = 1_500_000print(type(number))
print(number)"""
1500000
<class 'int'>
"""
8. setdefault
使用字典做词频统计时,常见实现算法
检查该关键词是否存在于字典中
如果存在, 该关键词词频加1
如果不存在,该关键词词频设为1
import pprinttext = """It's the first of April. It's still cold in the UK.
But I'm going to the museum so it should be a wonderful day"""counts = {}
for word in text.split():if word in counts: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 = {}
for word in text.split():counts.setdefault(word, 0)counts[word] += 1
9. lambda函数
lambda函数更简洁,可以在一行代码内定义一个简洁的函数。
def square(num:int) -> int:return num ** 2print(f"Function call: {square(4)}")
"""
Function call: 16
"""square_lambda = lambda x: x**2
print(f"Lambda function: {square_lambda(4)}")
"""
Lambda functional: 16
"""
10. Try-Except
写代码的时候,经常会遇到报错,例如分母为0
def get_ration(x:int, y:int) -> int:ratio = x/yratio = x/yreturn ratioprint(get_ratio(x=400, y=0))"""
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-7-688c8b54e5ec> in <module>4 return ratio5
----> 6 print(get_ratio(x=400, y=0))NameError: name 'get_ratio' is not defined
"""
可以使用try except包裹住 "小错误"
,并对可能出错的地方进行微调,来忽略错误。
def get_ration(x:int, y:int) -> int:try:ratio = x/yexcept: ZeroDivisionError:y = y + 1ratio = x/yreturn ratioprint(get_ratio(x=400, y=0))"""
400.0
"""
11. Args&Kwargs
def some_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 = []for x in range(10):#%取余数if x%2==0 and x!=0:even_numbers.append(x)print(even_numbers)"""
[2, 4, 6, 8]
"""
实现同样功能,列表推导式只需要一行
even_numbers = [x for x in range(10) if x % 2 == 0 and x != 0]
print(even_numbers)"""
[2, 4, 6, 8]
"""
12个优雅的 python 代码使用案例相关推荐
- python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...
原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...
- python如何写代码_如何写出优雅的Python代码?
有时候你会看到很Cool的Python代码,你惊讶于它的简洁,它的优雅,你不由自主地赞叹:竟然还能这样写.其实,这些优雅的代码都要归功于Python的特性,只要你能掌握这些Pythonic的技巧,你一 ...
- 6种更优雅书写Python代码!
1 简介 一些比较熟悉pandas的读者朋友应该经常会使用query().eval().pipe().assign()等pandas的常用方法,书写可读性很高的「链式」数据分析处理代码,从而更加丝滑流 ...
- 如何写出清晰又优雅的Python代码?我们给你这26条建议
来源:大数据DT本文约1900字,建议阅读5分钟PEP 8非常详细地描述了如何编写清晰的Python代码. [ 导读 ] Python Enhancement Proposal #8叫作PEP 8,它 ...
- 编写高效且优雅的 Python 代码
Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 "写着玩" 的标配脚本语言.但很多教材并没有教授 Python 的进阶和优化.本文作为进阶系列的文章,从基础的 ...
- 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现
文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...
- python代码写名字_必知必会系列_python代码优雅之道之代码命名约定
代码的命名约定对代码的提高可读性影响巨大.本文中,我们将总结并向您提供一些关于命名的最佳实践的示例,以帮助您编写更优雅的Python代码,使将来可能阅读和使用您的代码的人(包括您自己)受益. Pyth ...
- 一文详解层次聚类(Python代码)
本篇想和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-m ...
- 【机器学习】一文读懂层次聚类(Python代码)
本篇和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-me ...
最新文章
- TCP/IP和OSI4层、7层协议介绍
- java《算法》第四版一些API方法笔记
- python中dom模块_Python中使用dom模块生成XML文件示例
- 2016福州大学软件工程第四次团队作业-系统设计成绩汇总
- Android之如何判断当前是阿拉伯布局的方法
- Lowest Common Ancestor of a Binary Search Tree a Binary Tree
- gcn在图像上的应用_GCN的概念与应用
- iPhone 12系列价格曝光:起步价竟比iPhone 11还低?
- vue+django 生鲜项目 (二)
- Fragmen的onAttach方法
- JQuery 绑定事件
- vivado SRIO 学习
- java lambda排序
- css中相对长度单位_看看CSS中的长度单位
- 关于给青轴润轴消除弹簧音[误]
- 找到自身管理创新支点 振兴物流业
- kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
- 什么是stub文件_stub code
- zeppelin 下载和安装
- 大数据下的空气监测如何改变你的生活方式?
热门文章
- Python深度学习十大核心算法!
- html怎样创建复选框,如何使用可点击标签创建HTML复选框
- 概率统计·参数估计【矩估计、极大似然估计、无偏性、有效性、相合性】
- 单片机片内存储器烧写
- java中的toArray()
- 纽约大学计算机与科学,NYU的Computer Science and Engineering「纽约大学计算机科学与工程系」...
- gensim安装教程
- log4 日志级别使用
- 云服务器的IP是显示哪里,云服务器的ip在哪里看
- 如何将.md文件转换为pdf