Python作为一门灵活、充满技巧的语言,有着很多奇技淫巧,今天小编就跟大家分享一下在平时工作中所积累的技巧,这里面既有语法上的技巧,也有库函数的应用,可以帮助大家在平时的工作中提升效率,规避某些错误,一起来看看吧。

  1. 列表推导式
  2. 字典推导式
  3. 使用 zip 进行并行迭代
  4. 使用 enumerate 获取迭代器索引和值
  5. 使用 collections.Counter 进行计数
  6. 使用 map 函数进行批量操作
  7. 使用列表解析展平列表
  8. 列表内容转字符串
  9. 去除列表中重复元素
  10. 将字典值作为参数传递
  11. 两个变量值互换
  12. 连续赋值
  13. 链式比较
  14. 重复列表
  15. 重复字符串
  16. 三目运算
  17. 字典合并
  18. 字符串反转
  19. 列表转字符串
  20. for else 语句

1、列表推导式

使用一行代码生成列表,提高代码的简洁性和可读性。

squared = [x**2 for x in range(10)]
print(squared)

结果

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

当我们使用列表推导式 [x**2 for x in range(10)] 时,它等价于使用普通的 for 循环来生成一个列表。让我们将列表推导式转换为等效的普通 for 循环代码

squared = []  # 创建一个空列表,用于存放计算结果

for x in range(10):  # 对于范围内的每一个数 x
squared.append(x**2) # 计算 x 的平方并将结果添加到列表 squared 中 print(squared) # 打印最终的列表 squared

2、字典推导式

类似列表推导式,用于创建字典。所以代码用大括号包裹

square_dict = {x: x**2 for x in range(5)}
print(square_dict)

结果

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

3、使用 zip 进行并行迭代

将多个可迭代对象压缩在一起进行并行迭代。

names = ['Alice', 'Bob', 'Charlie']
ages = [30, 35, 40] for name, age in zip(names, ages):
print(name, age)

结果

Alice 30

Bob 35

Charlie 40

4、使用 enumerate 获取迭代器索引和值

在迭代时获取索引和对应的值,在迭代一些可迭代对象时(例如list,dict),可通过内置enumerate来获取迭代元素的索引值

for index, value in enumerate(names):
print(index, value)

5、使用 collections.Counter 进行计数

方便地计算可迭代对象中元素的频率。

from collections import Counter

words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts)

结果

Counter({'apple': 3, 'banana': 2, 'orange': 1})

6、使用 map 函数进行批量操作

通过map函数可进行批量操作,将函数应用于迭代器中的每个元素。

nums = [1, 2, 3, 4, 5]

def square(x):
return x**2
# 代码表示将list的每个元素迭代后应用square函数中
squared_nums = list(map(square, nums))
print(squared_nums)

结果

[1, 4, 9, 16, 25]

7、使用列表解析展平列表

将嵌套的列表展平为一维列表。

nested_list = [[1, 2, 3], [4, 5], [6, 7, 8]]
flattened_list = [num for sublist in nested_list for num in sublist]
print(flattened_list)

结果

[1, 2, 3, 4, 5, 6, 7, 8]

还有一种方式可以连接两个列表


a = [1, 2, 3]
b = [5, 6, 7] c = [*a, *b]
print(c)

结果

[1, 2, 3, 5, 6, 7]

8、列表内容转字符串

而列表中会存在字符串、数字等类型的数据,通过map将列表中元素转换成str类型,然后通过join函数就可以完成列表到字符串的转换。

9、去除列表中重复元素

list1 = [1,2,3,4,5,2,1,4,2,1]
print(list(set(list1)))

结果

[1, 2, 3, 4, 5]

10、将字典值作为参数传递

当你想将一个字典的值作为参数传递给函数时,你可以使用 ** 运算符来解包字典并将其作为关键字参数传递给函数。以下是一个示例:

def greet(name, age):
print(f"Hello, {name}! You are {age} years old.") person_info = {'name': 'Alice', 'age': 30} greet(**person_info)

结果

Hello, Alice! You are 30 years old.

11、两个变量值互换

>>> a=1
>>> b=2
>>> a,b=b,a
>>> a
2
>>> b
1

12、连续赋值

a = b = c = 50

13、链式比较

a = 15
if (10 < a < 20):
print("Hi")

等价于

a = 15
if (a>10 and a<20):
print("Hi")

14、重复列表

>>> [5,2]*4
[5, 2, 5, 2, 5, 2, 5, 2]

15、重复字符串

>>> "hello"*3
'hellohellohello'

16、三目运算

age = 30
slogon = "牛逼" if age == 30 else "niubility"

等价于

if age == 30:
slogon = "牛逼"
else:
slogon = "niubility"

17、字典合并

>>> a= {"a":1}
>>> b= {"b":2}
>>> {**a, **b}
{'a': 1, 'b': 2}
>>>

18、字符串反转

>>> s = "i love python"
>>> s[::-1]
'nohtyp evol i'
>>>

19、列表转字符串

>>> s = ["i", "love", "pyton"]
>>> " ".join(s)
'i love pyton'
>>>

20、for else 语句

检查列表foo是否有0,有就提前结束查找,没有就是打印“未发现"

found = False
for i in foo:
if i == 0:
found = True
break
if not found:
print("未发现")

总结

以上就是小编为大家分享总结的Python技巧,大家还有什么Python的奇淫技巧呢,欢迎转载、收藏、有所收获点赞支持一下。

关注公众号【Python魔法师】,一起进群沟通学习~

Python学习交流群

Python魔法:20个让你编程事半功倍的奇淫技巧(建议收藏)的更多相关文章

  1. python奇淫技巧之 抽屉 自动点赞

    前言 嘿,各位小伙伴晚上好呀,今天又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞 原计划打算,是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录,但是我又被啪啪打脸了 ...

  2. python 奇淫技巧之自动登录 哔哩哔哩

    前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...

  3. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  4. 简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群  群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...

  5. python魔法方法:__getattr__,__setattr__,__getattribute__

    python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...

  6. Python/MOOC /翻Wall和互联网编程的那些事

    Python MOOC 翻Wall和互联网编程的那些事 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系 ...

  7. Python学习day23-面向对象的编程

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  8. Python中使用模块和库编程

    """ python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...

  9. Python全栈【Socket网络编程】

    Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...

  10. Python魔法 - MetaClass

    Python魔法 - MetaClass metaclass The class of a class. Class definitions create a class name, a class ...

随机推荐

  1. P9110 [PA2020] Samochody dostawcze

    题目简述 有 \(n\) 个点,这些点分为两种类型.第一种,点在 \((x,0)\) 的位置.这些点从 \(t_i\) 的时刻开始向北走.第二种,点在 \((0,y)\) 的位置.这些点从 \(t_i ...

  2. arch linux 安装

    好长时间都没有更新自己的博客了,我简单翻阅了一下自己的更新记录,上一次更新好像还是在5月份左右,距今也有快半年,这半年也是遇到了很多事情,有不好的,也有好的.这半年我对在日常生活工作中使用Linux系 ...

  3. Linux文件IO之二 [补档-2023-07-21]

    8-5 linux系统IO函数: open函数: ​ 函数原型:int open(const char *pathname, int flags, mode_t mode); ​ 功能:打开一个文件并 ...

  4. 一篇带你掌握cmake入门|了解cmake|掌握cmake基本操作

    一篇带你掌握cmake入门 内容出处: 作者: 苏丙榅 链接: https://subingwen.cn/cmake/CMake-primer/ 来源: 爱编程的大丙 著作权归作者所有.商业转载请联系 ...

  5. P4747 [CERC2017] Intrinsic Interval 题解

    题目链接:Intrinsic Interval 讲讲析合树如何解决这种问题,其实这题很接近析合树的板题的应用. 增量法进行析合树建树时,需要用 ST 表预处理出 \(max\) 和 \(min\) 以 ...

  6. 小知识:OGG的TRANLOGOPTIONS MINEFROMACTIVEDG参数

    最近客户有一个需求,OGG源端需要配置在ADG环境,按历史配置规范,开启抽取进程报错: 2020-08-26 18:02:27 ERROR OGG-00060 Extract requires a v ...

  7. Windows平台安装Oracle11.2.0.4客户端报错INS-30131

    之前为解决EXP-00003错误给出了安装Oracle11.2.0.4的解决方案,自己测试是没问题的,客户自己安装反馈遇到报错INS-30131,MOS有一篇文章: E1: DB: Error INS ...

  8. Qt processEvents - 解决线程中事件阻塞(如槽函数被阻塞)

    百度了一会,发现没太有文字讲这件事情,因此整理成文字记录一下. processEvents介绍 长时间运行的操作可以调用processEvents() 保持应用程序响应能力. void QCoreAp ...

  9. CentOS7环境源码安装freeswitch1.10.7

    操作系统 :CentOS 7.6_x64 freeswitch版本 :1.10.7 一.安装步骤 1.下载freeswitch源代码 wget http://files.freeswitch.org/ ...

  10. JS 判断两个数组是否相等,元素以及顺序相等,顺序不同但元素相等

    壹 ❀ 引 在日常开发中,判断两个数组是否相等应该是较为常见的场景,因为常用,所以想着简单记录下.关于判断数组相等,这里我分为两种场景,第一种是数组完全相等,即数组元素相同且元素顺序一致:第二则为元素 ...