我是靠谱客的博主 幽默天空,最近开发中收集的这篇文章主要介绍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’)

最后

以上就是幽默天空为你收集整理的for语句解析的全部内容,希望文章能够帮你解决for语句解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部