python语法笔记

Wz的Faster R-CNN代码

一、语法
  1. for……in……
    格式:for x in y:
    循环体
    执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束
    如:
s = 'I love you more than i can say'
    for i in s:
        print(i)
  1. enumerate() :函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
  2. try……except……
    直接看这个吧https://www.runoob.com/python/python-exceptions.html
  3. with……as……
    常用于文件打开读写中,为了防止文件打开出错。
    看这个:https://blog.csdn.net/qiqicos/article/details/79200089
  4. 异常处理raise
    当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
    例子:
 a = 0
 if a==0:
    raise ValueError("The number is {}".format(a))

运行结果(显示为红色):

Traceback (most recent call last):
  File "D:/DUTpostgraduate/pytorch练习/pythonpractice/main.py", line 10, in <module>
    raise ValueError("The number is {}".format(a))
ValueError: The number is 0
  1. in
    (1)用于判断元素是否在可迭代对象中
a = [1,2,3,4,5]
    b = 5
    if b in a:
        print("{}在a内".format(b))
    else:
        raise ValueError("The number {} is not in a".format(b))

结果:

5在a内

(2)用于逐个取可迭代对象元素,见第一条

  1. 与或运算:与c语言的“&&”“||”不同,python里用and or
  2. is not none
    这啥玩意啊,好迷,没整明白
    试了试代码发现除了x = None,其余的[],’’,"",False,这些判断x is not none的时候返回值全是True。
  3. 用None切片增加维度:
    看个例子:
mean = torch.tensor([1, 2, 3])
    mean1 = mean[:, None, None]
    mean2 = mean[None, :, None]
    print(mean1)
    print(mean2)

得到结果:

tensor([[[1]], [[2]], [[3]]])
tensor([[[1], [2], [3]]])

mean1是让第2,3维为None,第一维有3个值(311的tensor)
mean2是让第1,3维为None,第二维有3个值(131的tensor)

二、包
  1. os(import os)
    os.path.exists():判断路径是否存在,存在返回true,不存在返回false。
    os.listdir(path):返回path所在路径的所有文件名
    如:
print(os.listdir("./"))

得到输出(注意它的格式):

['.idea', 'main.py']

os.path.join():将路径名拼接在一起
如:

s = os.path.join("./", "dataset", "flower")
    print(s)

得到:

./dataset\flower
  1. random(import random)
    random.seed(0):设置随机数种子,每次生成相同的随机数,保证结果可复现
    random.sample():sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机唯一的元素。
    如:
f = random.sample(range(0, 30), k=10)
    print("采样数据为:" + str(f))
    print("采样长度为:" + str(len(f)))

结果:

采样数据为:[2, 20, 9, 27, 29, 4, 0, 14, 24, 16]
采样长度为:10
  1. import json:
    dict = json.load(json_file):把json文件读到dict变量中
    如:
# json.load读取文件并将文件内容转为Python对象
    # 数据文件要s.json的内容 --> {"name": "wade", "age": 54, "gender": "man"}
    with open('s.json', 'r') as f:
        s1 = json.load(f)
        print("json.load将文件内容转为Python对象: type(json.load(f)) = {}".format(type(s1)))
        print("json.load将文件内容转为Python对象: json.load(f) = {}".format(s1))

得到:

json.load将文件内容转为Python对象: type(json.load(f)) = <class 'dict'>
json.load将文件内容转为Python对象: json.load(f) = {'name': 'wade', 'age': 54, 'gender': 'man'}
  1. from lxml import etree:
    先看这个:https://www.cnblogs.com/lincappu/p/12888183.html
  2. from PIL import Image
    img = Image.open(“filename”):打开图片将图像数据返回给img
三、函数
  1. sorted():
    格式:sorted(iterable, cmp=None, key=None, reverse=False)
    默认为升序排序,reverse=True时为降序。
  2. xx.split(“”):将字符串xx(注意xx是个字符串类型哈)中内容按“”中内容拆分开,返回一个字符串列表。
    如:
f = os.listdir("./")
    for file in f:
        print(file.split("."))

得到结果:

['', 'idea']
['main', 'py']
  1. len():返回对象中项目数量或字符串中字符数。
f = os.listdir("./")
    for file in f:
        print(file.split("."))
        print("该列表长度:"+str(len(file.split("."))))

结果:

['', 'idea']
该列表长度:2
['main', 'py']
该列表长度:2
  1. assert
    如:
s = os.path.join("./", "dataset", "flower")
assert os.path.exists(s), "not found {} file".format(s)

路径不存在时得到红色报错:

Traceback (most recent call last):
  File "D:/DUTpostgraduate/pytorch练习/pythonpractice/main.py", line 9, in <module>
    assert os.path.exists(s), "not found {} file".format(s)
AssertionError: not found ./dataset\flower file

路径存在则不会报错,什么也不输出。

  1. open:打开文件操作。
    看这个:https://www.runoob.com/python/file-methods.html
    file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有
    例子:
    with open("./a.txt") as a:
        text = a.read()
        print(text)

这是文件a:
在这里插入图片描述
输出结果:

12345
67890

file.readlines([sizeint]):读取所有行(空格和换行符也读)并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
例子:

    with open("./a.txt") as a:
        print(a.readlines())

输出结果:

['12345\n', '67890']
  1. strip():用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
    用法:str.strip([chars])
    str.strip()用于去掉末尾空格或换行符。
    例子:分别执行上两行和下两行
    with open("./a.txt", mode='r') as a:
        a_list = [text for text in a.readlines()]
        print("没加strip()函数前:" + str(a_list))
        # x_list = [text.strip() for text in a.readlines()]
        # print("加strip()函数后:" + str(x_list))

输出:

没加strip()函数前:['12345\n', '67890']
加strip()函数后:['12345', '67890']
  1. zip()
    将对象中对应的元素打包成一个元组。
    如:

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
得到:[(1, 4), (2, 5), (3, 6)]

  1. isinstance(object, classinfo)
    判断一个对象是否是一个已知的类型。
四、pytorch
  1. torch.as_tensor()
    将data转换为tensor格式
    data2 = torch.as_tennsor(data1)
    有一些需要注意的问题,看这个吧https://blog.csdn.net/Fluid_ray/article/details/109648310
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值