文章目录

  • 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. 下划线

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

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

  2. 忽略不需要操作的值

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

  4. 下划线间隔的数字

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. 检查该关键词是否存在于字典中

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

  3. 如果不存在,该关键词词频设为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 代码使用案例相关推荐

  1. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...

    原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...

  2. python如何写代码_如何写出优雅的Python代码?

    有时候你会看到很Cool的Python代码,你惊讶于它的简洁,它的优雅,你不由自主地赞叹:竟然还能这样写.其实,这些优雅的代码都要归功于Python的特性,只要你能掌握这些Pythonic的技巧,你一 ...

  3. 6种更优雅书写Python代码!

    1 简介 一些比较熟悉pandas的读者朋友应该经常会使用query().eval().pipe().assign()等pandas的常用方法,书写可读性很高的「链式」数据分析处理代码,从而更加丝滑流 ...

  4. 如何写出清晰又优雅的Python代码?我们给你这26条建议

    来源:大数据DT本文约1900字,建议阅读5分钟PEP 8非常详细地描述了如何编写清晰的Python代码. [ 导读 ] Python Enhancement Proposal #8叫作PEP 8,它 ...

  5. 编写高效且优雅的 Python 代码

    Python 作为一门入门极易并容易上瘾的语音,相信已经成为了很多人 "写着玩" 的标配脚本语言.但很多教材并没有教授 Python 的进阶和优化.本文作为进阶系列的文章,从基础的 ...

  6. 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

    文章目录 一.关联规则概述 1.1 关联规则引入 1.2 关联规则相关概念介绍 1.2.1 样本.事务.项集.规则 1.2.2 支持度.置信度 1.2.3 提升度 1.2.4 所有指标的公式 二.Py ...

  7. python代码写名字_必知必会系列_python代码优雅之道之代码命名约定

    代码的命名约定对代码的提高可读性影响巨大.本文中,我们将总结并向您提供一些关于命名的最佳实践的示例,以帮助您编写更优雅的Python代码,使将来可能阅读和使用您的代码的人(包括您自己)受益. Pyth ...

  8. 一文详解层次聚类(Python代码)

    本篇想和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-m ...

  9. 【机器学习】一文读懂层次聚类(Python代码)

    本篇和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-me ...

最新文章

  1. TCP/IP和OSI4层、7层协议介绍
  2. java《算法》第四版一些API方法笔记
  3. python中dom模块_Python中使用dom模块生成XML文件示例
  4. 2016福州大学软件工程第四次团队作业-系统设计成绩汇总
  5. Android之如何判断当前是阿拉伯布局的方法
  6. Lowest Common Ancestor of a Binary Search Tree a Binary Tree
  7. gcn在图像上的应用_GCN的概念与应用
  8. iPhone 12系列价格曝光:起步价竟比iPhone 11还低?
  9. vue+django 生鲜项目 (二)
  10. Fragmen的onAttach方法
  11. JQuery 绑定事件
  12. vivado SRIO 学习
  13. java lambda排序
  14. css中相对长度单位_看看CSS中的长度单位
  15. 关于给青轴润轴消除弹簧音[误]
  16. 找到自身管理创新支点 振兴物流业
  17. kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
  18. 什么是stub文件_stub code
  19. zeppelin 下载和安装
  20. 大数据下的空气监测如何改变你的生活方式?

热门文章

  1. Python深度学习十大核心算法!
  2. html怎样创建复选框,如何使用可点击标签创建HTML复选框
  3. 概率统计·参数估计【矩估计、极大似然估计、无偏性、有效性、相合性】
  4. 单片机片内存储器烧写
  5. java中的toArray()
  6. 纽约大学计算机与科学,NYU的Computer Science and Engineering「纽约大学计算机科学与工程系」...
  7. gensim安装教程
  8. log4 日志级别使用
  9. 云服务器的IP是显示哪里,云服务器的ip在哪里看
  10. 如何将.md文件转换为pdf