标签: python-itertools

Windows许可证密钥的所有排列

我需要为我的笔记本电脑申请Windows 8升级,我需要笔记本电脑底部的Windows 7许可证密钥.

因为微软凭借他们无限的智慧决定创建磨损的许可证标签,并且我无法清楚地阅读我的许可证密钥,这意味着我无法使用自动化流程注册我的笔记本电脑以获得Windows升级.

通过将笔记本电脑与灯光成一定角度,我已经能够验证大部分代码,但是几个字母都不明确(再次感谢Microsoft在标签中使用容易误读的字符).

我有以下(混淆)许可证密钥,

MPP6R-09RXG-2H[8B]MT-[B8]K[HN]M9-V[6G]C8R
Run Code Online (Sandbox Code Playgroud)

方括号中的字符是不明确的,所以它是8B,B8,HN,6G.

制作16种组合.

使用itertools生成此许可证密钥的可能排列是否合适?还是有更好的方法?

感谢贡献者,我得到了正确的密钥.检查密钥是否有效的一种非常方便的方法是使用Windows 7产品密钥检查程序.

python python-itertools

97
推荐指数
4
解决办法
4743
查看次数

72
推荐指数
4
解决办法
5万
查看次数

具有独特价值的排列

itertools.permutations根据其位置而不是其值来生成其元素被视为唯一的位置.所以基本上我想避免重复这样的:

>>> list(itertools.permutations([1, 1, 1]))
[(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)]
Run Code Online (Sandbox Code Playgroud)

之后进行过滤是不可能的,因为在我的情况下排列量太大了.

有人知道合适的算法吗?

非常感谢你!

编辑:

我基本上想要的是以下内容:

x = itertools.product((0, 1, 'x'), repeat=X)
x = sorted(x, key=functools.partial(count_elements, elem='x'))
Run Code Online (Sandbox Code Playgroud)

这是不可能的,因为sorted创建一个列表并且itertools.product的输出太大.

对不起,我应该已经描述了实际问题.

python permutation python-itertools

68
推荐指数
7
解决办法
3万
查看次数

第二个较短的压缩 Python 生成器:如何检索静默消耗的元素

我想解析 2 个(可能)不同长度的生成器zip

for el1, el2 in zip(gen1, gen2):
    print(el1, el2)
Run Code Online (Sandbox Code Playgroud)

但是,如果gen2元素较少,gen1则“消耗”一个额外的元素。

例如,

def my_gen(n:int):
    for i in range(n):
        yield i

gen1 = my_gen(10)
gen2 = my_gen(8)

list(zip(gen1, gen2))  # Last tuple is (7, 7)
print(next(gen1))  # printed value is "9" => 8 is missing

gen1 = my_gen(8)
gen2 = my_gen(10)

list(zip(gen1, gen2))  # Last tuple is (7, 7)
print(next(gen2))  # printed value is "8" => OK
Run Code Online (Sandbox Code Playgroud)

显然,缺少一个值(8在我之前的示例中),因为在它意识到没有更多元素之前gen1被读取(从而生成值8) …

python zip generator python-itertools python-3.x

66
推荐指数
7
解决办法
4440
查看次数

在itertools中chain和chain.from_iterable有什么区别?

我在互联网上找不到任何有效的例子,我可以看到它们之间的区别以及为什么选择一个而不是另一个.

python iterator python-itertools

61
推荐指数
5
解决办法
2万
查看次数

izip不能在Python 3.x中工作

我试图像这样导入izip模块:

from itertools import izip
Run Code Online (Sandbox Code Playgroud)

然而,在最近从Python 2.7转换到3之后 - 它似乎不起作用.

我想写一个csv文件:

writer.writerows(izip(variable1,2))
Run Code Online (Sandbox Code Playgroud)

但我没有运气.仍然会遇到错误.

python python-itertools python-2.7 python-3.x izip

59
推荐指数
3
解决办法
5万
查看次数

Python如何一次读取N行

我正在编写一个代码,一次取一个巨大的文本文件(几GB)N行,处理该批处理,并移动到下一行N行,直到我完成整个文件.(我不在乎最后一批是不是完美的尺寸).

我一直在阅读有关使用itertools islice进行此操作的信息.我想我在那里:

from itertools import islice
N = 16
infile = open("my_very_large_text_file", "r")
lines_gen = islice(infile, N)

for lines in lines_gen:
     ...process my lines...
Run Code Online (Sandbox Code Playgroud)

麻烦的是我想处理下一批16行,但我遗漏了一些东西

python lines python-itertools

44
推荐指数
2
解决办法
4万
查看次数

itertools.cycle()旁边.()?

好吧,我使用itertools.cycle().next()Python 2.6.6的方法,但现在我更新到3.2我注意到itertools.cycle()对象没有方法next().

我用它在类的spin()方法中循环一个字符串Spinner.因此,如果我们循环元组('|', '/', '-', '\\', '|', '/', '-'),它会打印:|,/,-,\,|,/,-,|,/等...

我搜索了Python 3.0,3.1和3.2的发行说明,并没有发现任何变化.什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?

先感谢您.

cycle next python-itertools python-3.x

40
推荐指数
2
解决办法
2万
查看次数

如何将itertools.product应用于列表列表的元素?

我有一个数组列表,我想获得数组中元素的笛卡尔积.

我将用一个例子来说明这个更具体......

itertools.product似乎可以做到这一点,但我陷入了一些细节.

arrays = [(-1,+1), (-2,+2), (-3,+3)];
Run Code Online (Sandbox Code Playgroud)

如果我做

cp = list(itertools.product(arrays));
Run Code Online (Sandbox Code Playgroud)

我明白了

cp = cp0 = [((-1, 1),), ((-2, 2),), ((-3, 3),)]
Run Code Online (Sandbox Code Playgroud)

但我想得到的是

cp1 = [(-1,-2,-3), (-1,-2,+3), (-1,+2,-3), (-1,+2,+3), ..., (+1,+2,-3), (+1,+2,+3)].
Run Code Online (Sandbox Code Playgroud)

我尝试了一些不同的东西:

cp = list(itertools.product(itertools.islice(arrays, len(arrays))));
cp = list(itertools.product(iter(arrays, len(arrays))));
Run Code Online (Sandbox Code Playgroud)

他们都让我CP0代替CP1.

有任何想法吗?

提前致谢.

python cartesian-product python-itertools

39
推荐指数
2
解决办法
5万
查看次数

Python:如何获得itertools _grouper的长度

我正在使用Python itertools并使用groupby按最后一个元素对一堆对进行排序.我已经把它排序了,我可以很好地遍历组,但我真的很想能够得到每个组的长度,而不必遍历每个组,增加一个计数器.

该项目是集群的一些数据点.我正在使用(numpy.array,int)对,其中numpy数组是一个数据点,整数是一个簇标签

这是我的相关代码:

data = sorted(data, key=lambda (point, cluster):cluster)
for cluster,clusterList in itertools.groupby(data, key=lambda (point, cluster):cluster):
    if len(clusterList) < minLen:
Run Code Online (Sandbox Code Playgroud)

在最后一行:if len(clusterList) < minLen:,我得到一个错误

'itertools._grouper'类型的对象没有len()

我查找了可用的操作_groupers,但找不到任何似乎提供组长度的内容.

python group-by python-itertools

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