Python魔法:20个让你编程事半功倍的奇淫技巧(建议收藏)
Python作为一门灵活、充满技巧的语言,有着很多奇技淫巧,今天小编就跟大家分享一下在平时工作中所积累的技巧,这里面既有语法上的技巧,也有库函数的应用,可以帮助大家在平时的工作中提升效率,规避某些错误,一起来看看吧。
- 列表推导式
- 字典推导式
- 使用
zip进行并行迭代 - 使用
enumerate获取迭代器索引和值 - 使用
collections.Counter进行计数 - 使用
map函数进行批量操作 - 使用列表解析展平列表
- 列表内容转字符串
- 去除列表中重复元素
- 将字典值作为参数传递
- 两个变量值互换
- 连续赋值
- 链式比较
- 重复列表
- 重复字符串
- 三目运算
- 字典合并
- 字符串反转
- 列表转字符串
- 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个让你编程事半功倍的奇淫技巧(建议收藏)的更多相关文章
- python奇淫技巧之 抽屉 自动点赞
前言 嘿,各位小伙伴晚上好呀,今天又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞 原计划打算,是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录,但是我又被啪啪打脸了 ...
- python 奇淫技巧之自动登录 哔哩哔哩
前言 嘿,各位小伙伴好呀,今天要带来点什么干货呢,就从我的实际开发中来给大家带来一个案例吧,如何自动登录 哔哩哔哩 接到老大通知,让我自动写一个自动登录 哔哩哔哩 的脚本,我当然是二话不说直接开怼,咱 ...
- python学习(20) 网络编程
原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...
- 简学Python第六章__class面向对象编程与异常处理
Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群 群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...
- python魔法方法:__getattr__,__setattr__,__getattribute__
python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...
- Python/MOOC /翻Wall和互联网编程的那些事
Python MOOC 翻Wall和互联网编程的那些事 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系 ...
- Python学习day23-面向对象的编程
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python中使用模块和库编程
""" python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...
- Python全栈【Socket网络编程】
Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...
- Python魔法 - MetaClass
Python魔法 - MetaClass metaclass The class of a class. Class definitions create a class name, a class ...
随机推荐
- 从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。
从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系. 项目效果 以下两张图是系统实际运行效果: 1.项目运行方式 运行环境:Python3 数据库:neo4j 预 ...
- Flask 框架实现自定义分页
手撸的表格分页: Flask框架下的分页,我研究了很久,自带的分页方法不稳定,还不如自己手撸的好使. <!--name:ndex.html--> <!DOCTYPE html> ...
- Bi-VAEGAN:对TF-VAEGAN提出的视觉到语义进一步改进
论文"Bi-directional Distribution Alignment for Transductive Zero-Shot Learning"提出Bi-VAEGAN,它 ...
- 体验 ABP 的功能和服务
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. ABP是一个全栈开发框架,它在企业解决方案的各个方面都有许多构建模块.在前面三章中 ...
- 使用DoraCloud构建远程办公桌面云
公司总部在上海.员工分布在各地.部分员工需要远程办公.为了实现远程办公,有几种备选方案. 方案1.在员工的PC上安装向日葵.ToDesk之类的远程工具. 方案2.公司总部提供VPN,员工通过VPN拨号 ...
- 物联网浏览器(IoTBrowser)-MQTT协议集成和测试
一.简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议.它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情 ...
- 【奶奶看了都会】Meta开源大模型LLama2部署使用教程,附模型对话效果
1.写在前面 就在7月19日,MetaAI开源了LLama2大模型,Meta 首席科学家.图灵奖获得者 Yann LeCun在推特上表示Meta 此举可能将改变大模型行业的竞争格局.一夜之间,大模型格 ...
- (python)做题记录||2024.2.4||题目是codewars的【 All Balanced Parentheses】
题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/python 我的解决方案: def balanced_parens(n): # ...
- 洛谷P2670 扫雷游戏 关于区域搜索标记的坐标增量法
最简单的思路就是扫描一边所有节点,对每个非地雷节点,去检查一下他八个方向的元素是否有'*',有的话就加一 但是逐个写出有点麻烦,我们不妨定义两个增量数组来存储每一次的相对位移,对每次检查只需要遍历这个 ...
- .NET Core开发实战(第19课:日志作用域:解决不同请求之间的日志干扰)--学习笔记
19 | 日志作用域:解决不同请求之间的日志干扰 开始之前先看一下上一节的代码 // 配置的框架 var configBuilder = new ConfigurationBuilder(); con ...