gpt4 book ai didi

列表理解中的 Python if 语句

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:05 26 4
gpt4 key购买 nike

我有这行代码:

bitext = [[sentence.strip().split() 
for sentence in pair if len(sentence) < 100]
for pair in zip(open(c_data), open(e_data))[:opts.num_sents]]

c_data是中文语句的文件
e_data是一个英文句子的文件。
bitext 应该是一个列表,其中包含成对的英文和中文句子,它们是彼此的翻译。

由于两个数据文件都很大,
我想通过只考虑一定长度以下的句子来降低代码的复杂性。长度以字符为单位。

举个例子,
我在这里将长度指定为 100:opts.num_sents 是一个变量,表示应考虑数据文件中的多少个句子。

问题/bug
例如,如果一个中文句子是 95 个字符,而一个英文句子是 105 个字符,bitext 将只更新中文句子。
但我希望代码只添加一对句子,如果它们都在规定的长度以下。
我该怎么做?

最佳答案

是时候打破这个单线了:

def tokenize(sentence):
return sentence.strip().split()

def sentence_pairs(c_data, e_data):
for chinese, english in zip(open(c_data), open(e_data))[:opts.num_sents]:
if len(chinese) < 100 and len(english) < 100
yield tokenize(chinese), tokenize(english)

yield 关键字将 sentence_pairs 变成生成器。如果你只迭代结果,这是一种更简单的写法:

def sentence_pairs(c_data, e_data):
results = []

for chinese, english in zip(open(c_data), open(e_data))[:opts.num_sents]:
if len(chinese) < 100 and len(english) < 100
results.append((chinese, english))

return results

关于列表理解中的 Python if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com