小编bad*_*ner的帖子

itertools 产品使用太多内存

我只有两个句子我想产生变化并计算 leveshtein 距离,但是当我尝试使用 itertools 产生这个列表时,即使我的 64GB RAM 机器也会超载。

有没有办法限制这一点,即使我必须将其限制为一定数量的组合。

到目前为止,这是我的代码:

from __future__ import print_function
import itertools
import sys

in_file = sys.argv[1]
X = []


with open(in_file) as f:
        lis = list(f)
X.append([' '.join(x) for x in itertools.product(*map(set, zip(*map(str.split, lis))))])

for x in X:
        print x
Run Code Online (Sandbox Code Playgroud)

python cartesian-product python-itertools

3
推荐指数
1
解决办法
1582
查看次数

从文件中打印bash中的n到n列

我有几千个由空格分隔的列.我想做类似的事情

awk '{print$1" "$2}' file
Run Code Online (Sandbox Code Playgroud)

但我需要打印一个范围并保持它们之间的空间.

例如,我有一个包含内容的文件:

1.006 2.0101 1.002 3.005 0.0000 4.09873 9.0009 1000.678 15.0 0.9999 11.8
78.003 9.411 0.000 0.003 20000.0100 1.03 9.00029 100.0 0.5 123.9 1.800
Run Code Online (Sandbox Code Playgroud)

我想打印2-3和6-9列我会得到:

2.0101 1.002 4.09873 9.0009 1000.678 15.0
9.411 0.000 1.03 9.00029 100.0 0.5
Run Code Online (Sandbox Code Playgroud)

我对其他工具持开放态度,但这似乎是awk中的一个好的单行程序.

bash awk

2
推荐指数
1
解决办法
195
查看次数

如何获取列表的所有可能顺序

我有 5 个垂直字符串,它们是由我的分类器按概率顺序生成的。如果分类器置信度非常高,我想保留该分类,但对于低分类,我想在所有可能的组合顺序之间进行变化,创建所有可能的垂直字符串的列表。

所以我的数据是这样的:

aa aa aa aa aa
ab ac aa ad ae
aa ab af ae ag
Run Code Online (Sandbox Code Playgroud)

我想获得所有可能的有序组合

aa aa aa aa aa aa aa aa aa aa ...
ab ac aa ad ae ae ab ac aa ad ...
aa ab af ae ag aa ab af ae ag...
Run Code Online (Sandbox Code Playgroud)

我尝试了 itertools,但似乎找不到合适的工具来执行此操作。有谁知道如何做到这一点?

这是我迄今为止尝试过的:

import sys
import os
import itertools
from itertools import permutations

in_file = sys.argv[1]

f1 = open(in_file, 'r')

new_lines = []

for line in f1.readlines():
    line …
Run Code Online (Sandbox Code Playgroud)

python python-itertools

2
推荐指数
1
解决办法
4725
查看次数

打印列表列表中的第一项

我正在尝试打印列表列表中的第一项.这就是我所拥有的:

我的清单是这样的:

['32 2 6 6', '31 31 31 6', '31 2 6 6']
Run Code Online (Sandbox Code Playgroud)

我的代码是:

from operator import itemgetter

contents = []
first_item = list(map(itemgetter(0), contents))
print first_item
Run Code Online (Sandbox Code Playgroud)

但是itemgetter只返回:['3','3','3']而不是['32','31','31']我可以使用分隔符吗?

python list

1
推荐指数
1
解决办法
2434
查看次数

如何在包含数字和字母的列表中在python中进行数字反向排序

我的清单是这样的:

10.987|first sentence
13.87|second sentence
9.098|third sentence
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

for x in my_list:
    sorted(my_list, reverse=True)
Run Code Online (Sandbox Code Playgroud)

我逻辑上得到:

9.098|third sentence
13.87|second sentence
10.987|first sentence
Run Code Online (Sandbox Code Playgroud)

这是因为它不被解释为数字,但我无法将整个字符串转换为浮点数.我想要的是第一部分的数字类型:

13.87|second sentence
10.987|first sentence
9.098|third sentence
Run Code Online (Sandbox Code Playgroud)

我尝试使用itemgetter,但我似乎无法找到我正在寻找的东西.在bash中,这很容易解决

sort -k
Run Code Online (Sandbox Code Playgroud)

在python中是否有相同的功能?

python sorting list

0
推荐指数
1
解决办法
58
查看次数

标签 统计

python ×4

list ×2

python-itertools ×2

awk ×1

bash ×1

cartesian-product ×1

sorting ×1