python代码不理解其作用

最近刚学nlp,于是从github下载了一个项目:https://github.com/Morizeyao/GPT2-Chinese
但同时,我对这个项目中的train.py文件中的27行至29行的代码不太理解:

sublines = [full_tokenizer.tokenize(line) for line in sublines if
                    len(line) > min_length]  # 只考虑长度超过min_length的句子
sublines = [full_tokenizer.convert_tokens_to_ids(line) for line in sublines]

希望各位有识之士能解释一下这两行代码的意思与作用

这个是深度学习里面,把一句话中的每个单词或者字转化为数字序列的方式,然后基于数字序列去检索对应的向量的操作。

这个是py构造列表的语法糖,第1、2行写完整类似下面这样,第3行也是同理:

    # 原来的列表
    sublines = [...]
    tmp = []
    for line in sublines:
        # 只考虑长度超过min_length的句子
        if len(line) > min_length:
            tmp.append(full_tokenizer.tokenize(line))
    sublines = tmp

这是典型的列表推导式。先看看sublines的for循环语句,它就是如果符合if判断条件,就把sublines的值赋给line。这时再来看for循环语句前面的,就好理解了。