gpt4 book ai didi

python - python 2 和 3 之间的列表理解差异

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:29 25 4
gpt4 key购买 nike

我需要将一个脚本从 python 3 移植到 python 2,该脚本只需要一个单词并生成所有可能的单词分段并返回最可能的分段。当生成分割候选时,python2 和 python3 给出了非常不同的结果。这是我正在使用的代码:

def splits(text, start=0, s=20):
"""Return a list of all (first, rest) pairs; start <= len(first) <= L."""
return [(text[:i], text[i:])
for i in range(start, min(len(text), s)+1)]

def __segment__(self, text):
"""Return a list of words that is the most probable segmentation of text."""
if not text:
return []
else:
candidates = [[first] + self.__segment__(rest)
for (first, rest) in splits(text, 1)]
print(candidates)
return max(candidates, key=self.p_words)

在打印候选人时,我得到了这个答案,我试图分割的单词是“casadecampo”,结果应该是“casa decampo”:

Python2

[[u'o']]
[[u'p', u'o'], [u'po']]
[[u'm', u'p', u'o'], [u'mp', u'o'], [u'mpo']]
[[u'a', u'm', u'p', u'o'], [u'am', u'p', u'o'], [u'amp', u'o'], [u'ampo']]
[[u'c', u'a', u'm', u'p', u'o'], [u'ca', u'm', u'p', u'o'], [u'cam', u'p', u'o'], [u'camp', u'o'], [u'campo']]
[[u'e', u'c', u'a', u'm', u'p', u'o'], [u'ec', u'a', u'm', u'p', u'o'], [u'eca', u'm', u'p', u'o'], [u'ecam', u'p', u'o'], [u'ecamp', u'o'], [u'ecampo']]
[[u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'de', u'c', u'a', u'm', u'p', u'o'], [u'dec', u'a', u'm', u'p', u'o'], [u'deca', u'm', u'p', u'o'], [u'decam', u'p', u'o'], [u'decamp', u'o'], [u'decampo']]
[[u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'ad', u'e', u'c', u'a', u'm', u'p', u'o'], [u'ade', u'c', u'a', u'm', u'p', u'o'], [u'adec', u'a', u'm', u'p', u'o'], [u'adeca', u'm', u'p', u'o'], [u'adecam', u'p', u'o'], [u'adecamp', u'o'], [u'adecampo']]
[[u's', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'sa', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'sad', u'e', u'c', u'a', u'm', u'p', u'o'], [u'sade', u'c', u'a', u'm', u'p', u'o'], [u'sadec', u'a', u'm', u'p', u'o'], [u'sadeca', u'm', u'p', u'o'], [u'sadecam', u'p', u'o'], [u'sadecamp', u'o'], [u'sadecampo']]
[[u'a', u's', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'as', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'asa', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'asad', u'e', u'c', u'a', u'm', u'p', u'o'], [u'asade', u'c', u'a', u'm', u'p', u'o'], [u'asadec', u'a', u'm', u'p', u'o'], [u'asadeca', u'm', u'p', u'o'], [u'asadecam', u'p', u'o'], [u'asadecamp', u'o'], [u'asadecampo']]
[[u'c', u'a', u's', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'ca', u's', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'cas', u'a', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'casa', u'd', u'e', u'c', u'a', u'm', u'p', u'o'], [u'casad', u'e', u'c', u'a', u'm', u'p', u'o'], [u'casade', u'c', u'a', u'm', u'p', u'o'], [u'casadec', u'a', u'm', u'p', u'o'], [u'casadeca', u'm', u'p', u'o'], [u'casadecam', u'p', u'o'], [u'casadecamp', u'o'], [u'casadecampo']]

我得到的解决方案是“c a s a d e c a m p o”

Python3

[['o']]
[['p', 'o'], ['po']]
[['m', 'po'], ['mp', 'o'], ['mpo']]
[['a', 'mp', 'o'], ['am', 'po'], ['amp', 'o'], ['ampo']]
[['c', 'amp', 'o'], ['ca', 'mp', 'o'], ['cam', 'po'], ['camp', 'o'], ['campo']]
[['e', 'campo'], ['ec', 'amp', 'o'], ['eca', 'mp', 'o'], ['ecam', 'po'], ['ecamp', 'o'], ['ecampo']]
[['d', 'e', 'campo'], ['de', 'campo'], ['dec', 'amp', 'o'], ['deca', 'mp', 'o'], ['decam', 'po'], ['decamp', 'o'], ['decampo']]
[['a', 'de', 'campo'], ['ad', 'e', 'campo'], ['ade', 'campo'], ['adec', 'amp', 'o'], ['adeca', 'mp', 'o'], ['adecam', 'po'], ['adecamp', 'o'], ['adecampo']]
[['s', 'a', 'de', 'campo'], ['sa', 'de', 'campo'], ['sad', 'e', 'campo'], ['sade', 'campo'], ['sadec', 'amp', 'o'], ['sadeca', 'mp', 'o'], ['sadecam', 'po'], ['sadecamp', 'o'], ['sadecampo']]
[['a', 'sade', 'campo'], ['as', 'a', 'de', 'campo'], ['asa', 'de', 'campo'], ['asad', 'e', 'campo'], ['asade', 'campo'], ['asadec', 'amp', 'o'], ['asadeca', 'mp', 'o'], ['asadecam', 'po'], ['asadecamp', 'o'], ['asadecampo']]
[['c', 'as', 'a', 'de', 'campo'], ['ca', 'sade', 'campo'], ['cas', 'a', 'de', 'campo'], ['casa', 'de', 'campo'], ['casad', 'e', 'campo'], ['casade', 'campo'], ['casadec', 'amp', 'o'], ['casadeca', 'mp', 'o'], ['casadecam', 'po'], ['casadecamp', 'o'], ['casadecampo']]

这个问题的解决方案是“casa de Campo”。

为什么我对 python 2 和 3 得到不同的解决方案?

编辑:添加“分割”功能

最佳答案

我发现了问题,它必须与python2中的整数除法有关,它认为所有概率都是0,因为我做了int/int。更改代码以执行 float/int 操作。

关于python - python 2 和 3 之间的列表理解差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49629657/

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