【发布时间】:2013-06-03 22:50:44
【问题描述】:
我阅读了一个文本文件进行一些分析,每个单词都附加到一个列表并给定一个 id
#!/usr/bin/python3
with fi as myfile:
for line in myfile:
for item in line.split(' '):
db[0].append(id_+1)
db[2].append(item)
...more stuff
然后我在列表中搜索每个单词以找到其匹配项,并将计数存储为 sim1。如果找到匹配项,我会测试下一个单词是否也与连续单词匹配,并将其计数存储为 sim2。 sim3 也是如此。我的代码如下:
for i in range(id_-3):
sim1=0
sim2=0
sim3=0
for j in range(id_-3):
if i==j: continue;
if db[2][i] == db[2][j]:
sim1 += 1
if db[2][i+1] == db[2][j+1]:
sim2 += 1
if db[2][i+2] == db[2][j+2]:
sim3 += 1
db[3].append(sim1)
db[4].append(sim2)
db[5].append(sim3)
这行得通,但是太慢了! 我相信python提供了更快的搜索方法,但我还是一个Py新手!
【问题讨论】:
-
输入/输出示例?
-
看起来您可以从更改数据存储方式中受益。例如,将其转换为单词到索引列表的映射(字典)。然后您可以检查这些列表中的连续值。根本不用搜索。换句话说;您不是在寻找更快的 Python,而是在寻找更好的算法。
-
只要用字典!它会让你的生活更轻松,需要更少的代码,而且很可能会加快速度
-
我读到docs.python.org/3.1/tutorial/datastructures.html 说字典是无序的键值对。如何计算匹配的单词:例如 db[2][i+1] == db[2][j+1]。我还在学习 python,非常感谢详细说明一个工作示例
标签: python list search python-3.x