python语句集锦
- 1.关于bool (True=1 && False=0)
- 2.关于itertools.product
- 3.两次sort()得到元素在升序/降序排列后的idx (torch操作)
- 4.print的几种方法
- 5. functools.reduce + lambda
- 6. 使用python命令让一个列表按另外一个列表的升序/降序进行排列
- 7. 字符串前r,f,u的含义
- 8. 数字转字符串(前面要加几个0的操作)
- 9.将多维列表平铺成一维列表
- 10.多维列表赋值
- 11.__call__方法
- 12. tuple知多少
- 13.用python执行cmd中的命令
- 14.filter的简单使用
- 15.判断文件后缀、获取某种类型的文件
- 16.isinstance() 函数
- 参考
1.关于bool (True=1 && False=0)
a,b=3,4
d=5
(a,b)[d==10]
输出为3
达到了通过bool操作来选择某一变量的目的,可以使用这种操作来选择字典类型cfg。
2.关于itertools.product
from itertools import product as product
list(product(range(3), repeat=2))
输出为:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1),
(1, 2), (2, 0), (2, 1), (2, 2)]
与
[(i,j) for i in range(3) for j in range(3)]
效果一样。
3.两次sort()得到元素在升序/降序排列后的idx (torch操作)
以降序为例:
a=torch.tensor([[3,6,1,2,9]])
_, index = a.sort(1,descending=True)
_, idx = index.sort(1,descending=True)
#tensor([[2, 1, 4, 3, 0]])
4.print的几种方法
方法一:
a=0.378
print("{:.5f} is not a integer".format(a))
方法二:
a=0.378
print(f"{
a:.5f} is not a integer")
方法三:
a=0.378
print("%.3f is not a integer"%a)
输出结果一致,均为:
扫描二维码关注公众号,回复:
13371931 查看本文章
0.37800 is not a integer
5. functools.reduce + lambda
import functools
functools.reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
Out: 15
functools.reduce(lambda x, y: x*y, [1, 2, 3, 4, 5])
Out: 120
6. 使用python命令让一个列表按另外一个列表的升序/降序进行排列
a=[3, 4, 5]
b=[2, 3, 1]
c=[[a[i],b[i]] for i in range(len(a))]
# [[3, 2], [4, 3], [5, 1]]
d=sorted(c,key=lambda x:x[1])
# [[5, 1], [3, 2], [4, 3]]
e=[item[0] for item in d]
#[5, 3, 4]
或者使用zip()再进行排序,更加简洁:
a=[3, 4, 5]
b=[2, 3, 1]
f=sorted(zip(a,b),key=lambda x:x[1])
#[(5, 1), (3, 2), (4, 3)]
g=[item[0] for item in f]
#[5, 3, 4]
7. 字符串前r,f,u的含义
字符 | 作用 |
---|---|
f | 格式化字符串,替换{}中的内容。 |
r | 将"\n"等转移字符当做普通字符,可用于re正则表达式中。 |
u | 表示以16位unicode进行存储。在Python2中,普通字符串是以8位ASCII码进行存储的。而Python3中,所有的字符串都是Unicode字符串 。 |
示例:
exp = "abc\n\n\"
print(exp)
输出为:
abc
而:
exp = r"\n\n\n\n"
print(exp)
输出为:
abc\n\n\
8. 数字转字符串(前面要加几个0的操作)
如果想让数字10
,输出字符串'010'
,可使用如下两种操作:
- 常规操作
a=10
(3-len(str(a)))*'0'+str(a)
#输出
'010'
- 快捷操作
a=10
"%03d"%a
#输出
'010'
9.将多维列表平铺成一维列表
a=[[1,2,3],[4,5,6],[7,8,9]]
sum(a,[])
#out:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
10.多维列表赋值
以二维为例,
10.1 方法一
ls=[[0]*3]*3
#out:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
但是若对单个元素赋值,则会产生意想不到的错误:
ls[0][0]=1
#out:
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
因此,这是一种不推荐的赋值方法。
10.2 方法二
ls=[[0]*3 for _ in range(3)]
#out:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
同样对单个元素赋值:
ls[0][0]=1
#out:
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
11.__call__方法
class linear:
def __init__(self, a, b):
self.a, self.b = a, b
def __call__(self, x):
return self.a * x + self.b
taxes = linear(0.3, 2)
print(taxes(10))
print(taxes.__call__(10))
结果为:
5.0
5.0
12. tuple知多少
12.1 tuple相加
(5,) +(4,)
# (5, 4)
13.用python执行cmd中的命令
13.1 os.system
如:
os.sytem("py d:\\1.py")
如果是exe,直接使用
os.sytem("d:\\1.exe")
13.2 使用subprocess
subprocess.run("CMD中的命令", shell=True)
#或:
subprocess.call("CMD中的命令", shell=True)
14.filter的简单使用
实例说话:
假如有这样一个列表:
ls=[(1,2),(4,3),(5,6)]
滤除列表元素tuple中第一个子元素大于第二个子元素的项,这里即过滤掉(4,3)。
该怎样做呢?
最容易想到的方法:
for item in ls:
if item[0]>item[1]:
ls.remove(item)
但这样写法有点啰嗦。
现在是filter过滤器出场:
list(filter(lambda x:x[0]<x[1],ls))
当然lambda
语句也可以用函数表示:
def filt(item):
return item[0]<item[1]
list(filter(filt,ls))
由于filter()
函数返回的是一个迭代器对象,使用list()
将其转化为列表对象。
15.判断文件后缀、获取某种类型的文件
- 1.endswith方法:
st='D://1.jpg'
st.endswith('.jpg')
#True
- 2.使用os.path.splitext()
返回一个tuple类型
os.path.splitext(st)
#('D://1', '.jpg')
- 3.使用glob
import glob
path=r'E:\images'
glob.glob(path+'/*.jpg')
#Out:
['E:\\images\\000005.jpg',
'E:\\images\\000007.jpg',
'E:\\images\\000009.jpg',
'E:\\images\\000012.jpg',
'E:\\images\\000016.jpg']
- 4.使用pathlib
import pathlib
path=r'E:\images'
data_dir = pathlib.Path(path)
list(data_dir.glob('*.jpg'))
#Out:
[WindowsPath('E:/images/000005.jpg'),
WindowsPath('E:/images/000007.jpg'),
WindowsPath('E:/images/000009.jpg'),
WindowsPath('E:/images/000012.jpg'),
WindowsPath('E:/images/000016.jpg')]
转成我们通常看到的文件地址形式:
str(list(data_dir.glob('*.jpg'))[0])
#'E:\\images\\000005.jpg'
然后就可以正常使用这些路径进行图片读取等操作,如:
import PIL
PIL.Image.open(str(list(data_dir.glob('*.jpg'))[0]))
16.isinstance() 函数
判断一个对象是否是某个类型的实例。
示例来自于https://m.runoob.com/python/python-func-isinstance.html:
a = 2
isinstance (a,int)
#True
isinstance (a,str)
#False
isinstance (a,(str,int,list)) # 是元组中的一个返回 True
#True
特别是将多个类型放到一个tuple里,写法非常简便,相当于多个语句的或。
参考
[1] https://www.runoob.com/python3/python3-string.html
[2] Python 字符串前面加u,r,b,f的含义
[3] https://www.cnblogs.com/geoffreyone/p/10761720.html
[4] https://m.runoob.com/python/python-func-isinstance.html