本文我总结了25个python专属骚操作,实属提高工作效率和在同事面前准点下班的装B心情,确定不收藏吗?

在本文中,本文简述了 17 个非常有用的 Python 技巧,例如查找、分割和合并列表等。它们都非常简单,但它们都很常用且能激发不一样的思路。

大家都知道 Python 是一种高级编程语言,是一门非常优美的语言,其设计的核心理念是代码的易读性,以及允许编程者通过若干行代码轻松表达想法创意。

实际上,很多人选择学习 Python 的首要原因是其编程的优美性,用它编码和表达想法非常自然。此外,Python 的编写使用方式有多种,数据科学、网页开发、机器学习皆可使用 Python。Quora、Pinterest 和 Spotify 都使用 Python 作为其后端开发语言。

一、python容器

  • 列表:元素可变(任何数据类型),有序(可索引),append/insert/pop;

  • 元组:元素不可变,但元素中的可变元素是可变的;有序(可索引);而且元组可以被散列,例如作为字典的键。

  • 集合:无序(不可被索引)、互异

  • 字典:无序,键值对(key:value),key唯一不可重复

二、链状比较操作符

Python不用很多条件一个一个写,比较操作符可以聚合。

三、开启文件分享

Python 允许运行一个 HTTP 服务器来从根路径共享文件,下面是开启服务器的命令:

四、三元操作符进行条件赋值

三元操作符是 if-else 语句也就是条件操作符的一个快捷方式:[表达式为真的返回值] if [表达式] else [表达式为假的返回值]

这里给出一个你可以用来使代码紧凑简洁的例子。下面的语句是说“如果 y 是 9,给 x 赋值 10,不然赋值为 20”。

x = 10 if (y == 9) else 20

在列表推导中:

[m**2 if m > 10 else m**4 for m in range(50)]

判断最小值:

def small(a, b, c):return a if a <= b and a <= c else (b if b <= a and b <= c else c)

类中:

x = (classA if y == 1 else classB)(param1, param2)

五、多行字符串

这个比c方便多了,c打上换行符再加上转义,真的很难受

a='''dvfssd
fsdfdsfsd
dsdsfbfdfasf
afasfaf'''
print(a)

六、in判断

可以直接用来判断某个变量是否在列表中

我们可以使用下面的方式来验证多个值:

if m in [1,3,5,7]:

而不是:

if m==1 or m==3 or m==5 or m==7:

七、  四种翻转字符串/列表的方式

翻转列表本身

testList = [1, 3, 5]
testList.reverse()
print(testList)
#-> [5, 3, 1]

在一个循环中翻转并迭代输出

#Python学习交流群:531509025
for element in reversed([1,3,5]):print(element)#1-> 5
#2-> 3
#3-> 1

一行代码翻转字符串

"Test Python"[::-1]#输出 “nohtyP tseT”

使用切片翻转列表

[1, 3, 5][::-1]#输出 [5,3,1]。

八、一次性初始化多个变量

可以直接赋值:

a,b,c,d=1,2,3,4

可以利用列表:

List = [1,2,3]
x,y,z=List
print(x, y, z)
#-> 1 2 3

(元素个数应与列表长度相同)

九、打印模块路径

import socket
print(socket)
#<module 'socket' from '/usr/lib/python2.7/socket.py'>

十、字典推导

Python不光列表用推导式,字典/集合也有

#列表
l=[[0 for i in range(4)] for i in range(4)]#生成二维列表
print(l)
#  [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]testDict = {i: i * i for i in xrange(10)}
testSet = {i * 2 for i in xrange(10)}print(testSet)
print(testDict)#set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

十一、拼接字符串

众所周知,python中字符串可以相加:

a="i "
b="love "
c="you"
print(a+b+c)

拼接列表中的所有元素为一个字符串

l=['a','b','c']
print(''join(l))
#以join左边的字符做分割

十二、循环枚举索引

list = [10, 20, 30]
for i, value in enumerate(list):print(i, ': ', value)#1-> 0 : 10
#2-> 1 : 20
#3-> 2 : 30

很方便的找到下标和对应元素

十三、返回多个值

并没有太多编程语言支持这个特性,然而 Python 中的方法确实(可以)返回多个值

def a():return 1,2,3,4,5

十四、

python3 -m http.server

上面的命令会在默认端口也就是 8000 开启一个服务器,你可以将一个自定义的端口号以最后一个参数的方式传递到上面的命令中。

十五、调试脚本

我们可以在<pdb>模块的帮助下在 Python 脚本中设置断点,例子:

import pdb
pdb.set_trace()

十六、直接迭代序列元素

对序列(str、list、tuple等),直接迭代序列元素,比迭代元素的索引速度要更快。

#Python学习交流群:531509025
>>> l=[0,1,2,3,4,5]
>>> for i in l:print(i)
#快
>>> for i in range(len(l)):print(l[i])
#慢

十七、巧用else语句(重要)

python的else 子句不仅能在 if 语句中使用,还能在 for、while 和 try 等语句中使用,这个语言特性不是什么秘密,但却没有得到重视。

for:l=[1,2,3,4,5]
for i in l:if i=='6':print(666)break
else:print(999)

如果不这么实现,我们只能设置一个变量来记录了:

l=[1,2,3,4,5]
a=1
for i in l:if i=='6':print(666)a=0break
if a:print(999)

while和for类似

看一下try:

try:a()
except OSError:#语句1
else:#语句2

仅当 try 块中没有异常抛出时才运行 else 块。

总结一下else:

for:
仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块。
while:
仅当 while 循环因为条件为假值而退出时(即 while 循环没有被break 语句中止)才运行 else 块。
try:
仅当 try 块中没有异常抛出时才运行 else 块。

即,如果异常或者 return、break 或 continue 语句导致控制权跳到了复合语句的主块之外,那么else 子句也会被跳过。

按正常的理解应该是“要么运行这个循环,要么做那件事”。可是,在循环中,else 的语义恰好相反:“运行这个循环,然后做那件事。”

十八、except的用法和作用

  • try/except: 捕捉由PYTHON自身或写程序过程中引发的异常并恢复

  • except: 捕捉所有其他异常

  • except name: 只捕捉特定的异常

  • except name, value: 捕捉异常及格外的数据(实例)

  • except (name1,name2) 捕捉列出来的异常

  • except (name1,name2),value: 捕捉任何列出的异常,并取得额外数据

  • else: 如果没有引发异常就运行

  • finally: 总是会运行此处代码

十九、Python自省

这个也是python彪悍的特性.自省就是面向对象的语言所写的程序在运行时,所能知道对象的类型.简单一句就是运行时能够获得对象的类型.比如type(),dir(),getattr(),hasattr(),isinstance().十九、

二十、map()

map() 函数接收两个参数,一个是函数,一个是 Iterable , map 将传入的函数依次作用到序列的每个元素, 并把结果作为新的 Iterator 返回。(重点理解)

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用 map() 实现如下:

>>> def f(x):
...     return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

map() 作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把这个list所有数字转为字符串:

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

二十一、reduce

reduce 把一个函数作用在一个序列 [x1, x2, x3, …] 上,这个函数必须接收两个参数, reduce 把结果继续和序列的下一个元素做累积计算

简单例子:

>>> from functools import reduce
>>> def fn(x, y):return x * 10 + y>>> reduce(fn, [1, 3, 5, 7, 9])
13579

结合一下,我们可以自己写出int()函数

from functools import reducea={'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}def charnum(s):return a[s]def strint(s):return reduce(lambda x, y: x * 10 + y, map(charnum, s))

我们继续说一些好用的函数

二十二、split

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串。

语法:

str.split(str="", num=string.count(str))

简化:

str.split("")

二十三、理论结合实际

1)结合第四期所学知识,我们可以写出这一行代码

print ( " " .join( input ().split( " " )[:: - 1 ]))

实现功能,leetcode原题:给定一个句子(只包含字母和空格),将句子中的单词位置反转,单词用空格分割,单词之间只有一个空格,前后没有空格。比如:(1)“hello xiao mi” - >“ mi xiao你好“
2)再举一例:

将两个整型数组按照升序合并,并且过滤掉重复数组元素

输入参数:

  • int* pArray1 :整型数组1

  • intiArray1Num:数组1元素个数

  • int* pArray2 :整型数组2

  • intiArray2Num:数组2元素个数

对于python来说,给个数没什么卵用。

a,b,c,d=input(),list(map(int,input().split())),input(),list(map(int,input().split()))
print("".join(map(str,sorted(list(set(b+d))))))

3)我们把最近的知识结合起来做一道题:

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

#Python学习交流群:531509025
result=""
for i in input()[::-1]:if i not in result:result+=i
print(result)

还有很多具体的简洁操作,这里就不再举例子了,多体会吧。

好,我们继续其它函数。

二十四、filter

Python内建的 filter() 函数用于过滤序列。

和 map() 类似, filter() 也接收一个函数和一个序列。和 map() 不同的是, filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素。

简单例子,删掉偶数:

def is_odd(n):return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

本代码非原创:

#先构造一个从3开始的奇数序列:
def _odd_iter():n = 1while True:n = n + 2yield n
#这是一个生成器,并且是一个无限序列。#筛选函数
def _not_divisible(n):return lambda x: x % n > 0
#生成器
def primes():yield 2it = _odd_iter() # 初始序列while True:n = next(it) # 返回序列的第一个数yield nit = filter(_not_divisible(n), it) # 构造新序列

利用 filter() 不断产生筛选后的新的序列

Iterator 是惰性计算的序列,所以我们可以用Python表示“全体自然数”,“全体素数”这样的序列,而代码非常简洁。

二十五、sorted

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
#可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

我们再看一个字符串排序的例子:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于 'Z' < 'a' ,结果,大写字母 Z 会排在小写字母 a 的前面。

现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法,不必对现有代码大加改动,只要我们能用一个key函数把字符串映射为忽略大小写排序即可。忽略大小写来比较两个字符串,实际上就是先把字符串都变成大写(或者都变成小写),再比较。

这样,我们给 sorted 传入key函数,即可实现忽略大小写的排序:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

要进行反向排序,不必改动key函数,可以传入第三个参数 reverse=True :

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。

sorted() 也是一个高阶函数。用 sorted() 排序的关键在于实现一个映射函数。

彩蛋

最后,想学习Python的小伙伴们:

这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。送给正在学习python的小伙伴!这里是python学习者聚集地,欢迎初学和进阶中的小伙伴!

私信我 666  分享给你们

装逼利器 25个Python小技巧骚断同事腰相关推荐

  1. python装逼_能够让你装逼的10个Python小技巧

    列表推导式 你有一个list: bag = [1, 2, 3, 4, 5] 现在你想让所有元素翻倍,让它看起来是这个样子: [2, 4, 6, 8, 10] 大多初学者,根据之前语言的经验会大概这样来 ...

  2. 编程小白和大神都想要的百元级物理外挂(装逼利器)----KeyPad++编程键盘

    这两天夜不能寐,终究还是做出了这个违背祖宗的决定.... 是的,我正是要将一代代编程大神薪火相传的的终极奥义公之于众. 当你刚开始熟悉和掌握一门语言时,无论是C++还是Java亦或是Python,我们 ...

  3. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  4. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  5. 不藏了!分享100个Python小技巧!!

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  6. 100个Python小技巧!帮你节省很多头发

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...

  7. 整理了100个Python小技巧(超级实用)

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手.你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等. ...

  8. 快收藏!!整理了100个Python小技巧!!

    大家好,我是小F- 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发 ...

  9. python hist函数_虎哥的python小技巧放送之绘制统计图(2)

    先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...

最新文章

  1. 欧盟如何运用AI之力推动社会创新
  2. 读书笔记-大型网站技术架构(核心原理与案例分析)
  3. ESP8266中char数据类型注意事项
  4. ABAP RANGES 在 RFC 的应用示例
  5. 团队组建阶段,项目经理要做些什么?
  6. CG-CTF-Web-SQL注入1
  7. php查找txt文件是否有,php怎么查询txt文件是否存在
  8. 如何通过 C# 判断一个 路径 是本机还是远程 ?
  9. (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  10. 1、图解Oracle Logminer配置使用
  11. 我的conky 配置(拆分版)
  12. 为什么很多设计师都会选择mac?
  13. Rosalind工具库:使用EMBOSS处理生物数据
  14. 智能建筑--常见协议
  15. oracle 百分位数,oracle分析函数 percent_rank, percentile_cont, percentile_disc
  16. 好好编程-物流项目03【GitHub管理】
  17. 某品牌电批单机知识总结
  18. Javascript验证身份证号码:正则表达式
  19. 微信小程序打包的原理_说说微信小程序和它的打包加密算法
  20. P7456 [CERC2018] The ABCD Murderer (ac自动机+线段树优化dp/反向st)

热门文章

  1. springcloud 查看Zuul的路由端点 /routes
  2. Vue结合萤石ezuikit-js实现实时监控视频
  3. UG NX 12 通过点构造面
  4. python中最小公倍数函数_Python实现的求解最小公倍数算法示例
  5. PHP扩展编写、PHP扩展调试、VLD源码分析、基于嵌入式Embed SAPI实现opcode查看
  6. WordPress编辑器支持Word文档一键粘贴
  7. 五种常用的图片格式及其是否有数据压缩的总结
  8. 说说css中pt、px、em、rem都扮演了什么角色
  9. Windows java,jdk安装与环境变量配置 详细教程(图)
  10. 泛型(Generic)简介