栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python那些编程小技巧

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python那些编程小技巧

以下所用环境为Python3.x 所有操作仅使用内置函数。

1. 对于list排序 可以返回排序好的list 也可以返回根据list的值排序的index。
#对list进行排序 使用sort函数 该函数可以对list本身进行操作 所以不需要再有一个变量来获取排序的结果
lis [1,2,3,0,1,9,8]
sort(lis)
print(lis)
 [0,1,1,2,3,8,9]
#需要返回list排序的索引 需要用到sorted函数。
#sorted(iterable, key None, reverse False),sorted有三个参数,具体含义可自行搜索。
#sorted的操作结果需要用一个变量去获取 例如下面的a
lis [1,2,3,0,1,9,8]
a sorted(range(len(lis)), key lambda k: lis[k])
print(a)
 [3, 0, 4, 1, 2, 6, 5]
#range(len(lis))返回的是一个可迭代对象 也可以写成一个数组 即
#替换为[i for i in range(len(lis))] 也就是[0,1,2,3,4,5,6]
#lambda是匿名函数 这个函数的传入参数是k 函数的执行体为lis[k]
#key值就是排序的依据 也就是把需要排序的lis遍历一遍

sorted还有很多便捷的操作 如果有多个指标 可以指定某一个指标进行排序 具体的用法可以参考这里 sorted用法
关于匿名函数也可以多查阅一些 蛮实用的。
上面sorted排序的内容来源于python如何返回排序列表的索引

2. Python获取输入的数据流
#获取输入数据流 以换行符为结束标志 换行符之前的所有输入都会被记录在一个变量中 例如输入的是2 3 4↙
k input()
 k 2,3,4 

input函数接收到的内容都被转换为str类型 规则性输入的时候可以直接用split函数转换成列表方便后续应用。

#如果输入是规则的 即都用逗号或空格分割 可以使用split函数。
#例如输入的是2 3 4↙
k input().split( , ) 
 k [ 2 , 3 , 4 ]
#结合map函数 使list的类型强制转换
k list(map(int,k))
 k [2,3,4]
3. 创建一个list

一个空的list 可以使用append del pop remove,count 对其操作。

listA []

特定长度的list

#返回一个长度为15的list 且每个值都为0
listB [0] * 15

递增的list

#返回0-9的递增list
listC [i for i in range(10)]
4. list操作

对list进行反序

a [1,2,3]
b a[::-1]
print(b)
 [3,2,1]

按索引或值 删除一个元素

#按索引删除
del a[0]
print(a)
 [2,3]
#按值删除
a.remove(3)
print(a)

pop函数 弹出一个值 并删除这个值

#pop的index默认为0 -1表示最后一个
a [1,2,3]
b pop(index 0)
 a [2,3]

clear操作 情况list

a [1,2,3]
a.clear()
 a []

list相加

a [1,2,3]
a a [4,5]
 a [1,2,3,4,5]
b [6,7]
 a [1,2,3,4,5,6,7]
或者当c为一个变量时 
a [c]
5. 矩阵90度旋转
#矩阵逆时针旋转90°
def trans90(self,matrix):
 res []
 for line in zip(*matrix):
 res.append(list(line))
 return res[::-1]
6. 二进制

剑指offer中的JZ11 题目为 输入一个整数 n 输出该数32位二进制表示中1的个数。其中负数用补码表示。

def NumberOf1(self, n):
 # write code here
 # 直接进行位操作 与16进制的 8个f 即32个1 进行与操作。
 #负数时 会直接得到该负数的补码
 #正数时 原码与补码相同 得到的结果
 n n 0xffffffff
 str bin(n)[2:]
 return str.count( 1 )

需要注意的地方
首先 可以通过“ ”操作进行补码操作 “0x”是16位进制的标识 后面的“ffffffff”表示32个1 也就是题目要求的32位二进制表示。
其次 bin()返回一个整数 int 或者长整数 long int 的二进制表示,该函数的结果对正负是有区别的。

a bin(8)
 a 0b1000
b bin(-8)
 b -0b1000
7. list类型转换 一维/二维
#一维list类型转换
tt [ 1 , 2 , 3 ]
res list(map(int,tt))
 res [1,2,3]
#二维list类型转换 本质上还是以为类型转换的方法
tt [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
res []
for i in range(len(tt)):
 temp list(map(int,tt[i]))
 res.append(temp)
 res [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
#或者可以把for循环简写成如下格式
[res.append(list(map(int,tt[i]))) for i in range(len(tt))]
8. 拼接 : .join()
#用空格拼接
a [ this , is , an , apple ]
b .join(a)
 b this is an apple
#如果不需要有空格 则是
c .join(a)
 c thisisanapple
#join函数中必须是str类型 如果不是需要强制类型转换
d [1,2,3]
e .join([str(i) for i in d])
 d 123
9. list降维

第一种形式

cc [[1,2,3,4]]
# for i in cc:
# a i
print(a)
 a [1,2,3,4]
#或者采用for循环的简写形式 
a [j for i in cc for j in i]
print(a)
 a [1,2,3,4]

第二种形式

cc [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in cc:
 a [1,2,3,4,5,6,7,8,9]
#或者采用和第一种形式相同的写法
a [j for i in res for j in i]
 a [1,2,3,4,5,6,7,8,9]
10. for的简写

一层for循环的简写

for i in range(n):
 对i的操作
#可简写成
 [ 对i的操作 for i in 列表 ]

两层for循环的简写

#[对i的操作 for 单个元素 in 列表 for i in 单个元素]
y_list [[1,2,3],[4,5,6]]
[print(i) for y in y_list for i in y]
 1 2 3 4 5 6
11. if的简写
True的逻辑 if 条件 else False的逻辑

例如

y 0
x y 3 if y 3 else y-1
 x -1

for循环和if判断相结合的缩写形式

[判断为True的i的操作 for i in 列表 if i的判断 ]

例如

x [1,2,3,4,5,6,7]
[print(i) for i in x if i 3 ]
 4,5,6,7
12. 匿名函数lambda

形式 lambda 参数 表达式

lambda k: 2*k

如果想要直接调用,可以是如下写法

a 3
lambda k: 2*k a 

以上简写操作参考内容为 Python 简写操作 for、if简写、匿名函数

2021/09/26更新

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号