for语句解析

1、[对(x)的操作 for x in 集合 if 条件],[对(x,y)的操作 for x in 集合1 for y in 集合2 if 条件]

举一个简单的例子:x=[1,2,3,4],y=[5,6,7,8],让着两个list中的偶数分别相加,应该结果2+6,4+6,2+8,4+8

下面用一句话来写:

[a + b for a in x for b in y if a%2 == 0 and b%2 ==0]  

2、对yolo v5for语句解读:

for p in path if isinstance(path, list) else [path]:
    p = Path(p)  # os-agnostic
    if p.is_dir():  # dir
        # 检测指定的文件是否是一个目录,如果是则返回TRUE、否则返回FALSE
        # 返回满足条件的文件列表
        f += glob.glob(str(p / '**' / '*.*'), recursive=True)
        # f = list(p.rglob('**/*.*'))  # pathlib
    elif p.is_file():  # file
        with open(p, 'r') as t:
            t = t.read().strip().splitlines()
            parent = str(p.parent) + os.sep
            f += [x.replace('./', parent) if x.startswith('./') else x for x in
                  t]  # local to global path
            # f += [p.parent / x.lstrip(os.sep) for x in t] 
    else:
        raise Exception(f'{prefix}{p} does not exist')

 所以无论怎么path都会变成list,之后在执行其他语句。

3、类中的__call__()方法:

重新定义__call__(),类对象就可以像函数一样调用,不用经过实例化。

# 重载运算符
    def __call__(self, im, img2, labels, p=1.0):
        if self.transform and random.random() < p:
            new = self.transform(image=im, image1=img2, bboxes=labels[:, 1:], class_labels=labels[:, 0])  # transformed
            # 转换为xywh归一化坐标
            im, img2, labels = new['image'], new['image1'], np.array([[c, *b] for c, b in zip(new['class_labels'], new['bboxes'])])
     

可以直接通过类名使用函数的方法调用类。(比如P是一个类对象,你把这个call重写以后,你在下面像函数一样使用比如这样p(),会默认去执行里面的方法)不重写则不会调用该方法。

img, img2, labels = self.albumentations(img,img2, labels)

4、python中的三目运算符

True_statements if expression else False_statements

三目运算符的规则是:先对逻辑表达式expression求值,如果逻辑表达式返回True,则执行True_statement,如果逻辑表达式为返回值为False,则执行并返回False_statement的值。

 如果只是在控制台上输出提示信息:则可以改为如下形式:

 三目运算符中True_statements或False_statements种可以放置多条语句,一般有两种放置方式:

①:多条语句以英文逗号隔开,每条语句都会执行,程序返回多条语句的返回值组成的元组。

②:多条语句以英文分号隔开,每局都会执行,程序只会返回第一条语句的返回值。

 以上两句代码会返回两条语句的返回值组成的元组,print()返回值为None,以上输出结果为:

(None, ‘a大于b’)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

。七十二。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值