python - 避免重复等效行
问题描述
def tokenized_dataset(self, dataset):
tokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")
print("\n"+"="*10, "Start Tokenizing", "="*10)
start = time.process_time()
train_articles = [self.encode(document, tokenizer) for document in dataset["train"]["article"]]
test_articles = [self.encode(document, tokenizer) for document in dataset["test"]["article"]]
val_articles = [self.encode(document, tokenizer) for document in dataset["val"]["article"]]
train_abstracts = [self.encode(document, tokenizer) for document in dataset["train"]["abstract"]]
test_abstracts = [self.encode(document, tokenizer) for document in dataset["test"]["abstract"]]
val_abstracts = [self.encode(document, tokenizer) for document in dataset["val"]["abstract"]]
print("Time:", time.process_time() - start)
print("=" * 10, "End Tokenizing", "="*10+"\n")
return {"train": (dataset["train"]["id"], train_articles, train_abstracts),
"test": (dataset["train"]["id"], test_articles, test_abstracts),
"val": (dataset["val"]["id"], val_articles, val_abstracts)}
我有这段代码,我刚刚意识到我重复了 6 次或等效的代码,即[self.encode(document, tokenizer) for document in dataset...]
. 有没有办法通过更自然和更少重复的东西来改变 6 条等效线的块?
解决方案
您可以使用 python 函数轻松地做到这一点。
def get_values(x,y):
return [self.encode(document, tokenizer) for document in dataset[x][y]]
推荐阅读
- swift - SwiftUI 自定义 tabItem
- javascript - 我有一个提交给自身的表单,导致页面刷新。我正在尝试使该代码进行 ajax 调用,因此只有一些页面刷新
- android - 使用 Java keytool 以 2 路 TLS 为 CLIENT 创建自签名证书时的名字和姓氏?
- c# - QNA Maker REST API 获取操作详细信息的问题
- python - 按列值过滤熊猫数据框的行而不指定列名
- azure-devops - 如何自动管理 Azure IoT Edge 证书
- .htaccess - 请求的 404 之前的标头代码 302
- laravel - Laravel 8 - 外键约束的格式不正确
- oracle-apex - wwv_flow_files 不再可用于在 Apex19.1 中使用其字段
- javascript - 在 React 中将 Excel 生成的文件转换为 PDF