以下所用环境为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 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 -0b10007. 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 1239. 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 611. 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,712. 匿名函数lambda
形式 lambda 参数 表达式
lambda k: 2*k
如果想要直接调用,可以是如下写法
a 3 lambda k: 2*k a
以上简写操作参考内容为 Python 简写操作 for、if简写、匿名函数
2021/09/26更新



