我需要为我的笔记本电脑申请Windows 8升级,我需要笔记本电脑底部的Windows 7许可证密钥.
因为微软凭借他们无限的智慧决定创建磨损的许可证标签,并且我无法清楚地阅读我的许可证密钥,这意味着我无法使用自动化流程注册我的笔记本电脑以获得Windows升级.
通过将笔记本电脑与灯光成一定角度,我已经能够验证大部分代码,但是几个字母都不明确(再次感谢Microsoft在标签中使用容易误读的字符).
我有以下(混淆)许可证密钥,
MPP6R-09RXG-2H[8B]MT-[B8]K[HN]M9-V[6G]C8R
Run Code Online (Sandbox Code Playgroud)
方括号中的字符是不明确的,所以它是8或B,B或8,H或N,6或G.
制作16种组合.
使用itertools生成此许可证密钥的可能排列是否合适?还是有更好的方法?
感谢贡献者,我得到了正确的密钥.检查密钥是否有效的一种非常方便的方法是使用Windows 7产品密钥检查程序.
什么时候用它zip代替itertools.izip?
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的输出太大.
对不起,我应该已经描述了实际问题.
我想解析 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) …
我在互联网上找不到任何有效的例子,我可以看到它们之间的区别以及为什么选择一个而不是另一个.
我试图像这样导入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)
但我没有运气.仍然会遇到错误.
我正在编写一个代码,一次取一个巨大的文本文件(几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行,但我遗漏了一些东西
好吧,我使用itertools.cycle().next()Python 2.6.6的方法,但现在我更新到3.2我注意到itertools.cycle()对象没有方法next().
我用它在类的spin()方法中循环一个字符串Spinner.因此,如果我们循环元组('|', '/', '-', '\\', '|', '/', '-'),它会打印:|,/,-,\,|,/,-,|,/等...
我搜索了Python 3.0,3.1和3.2的发行说明,并没有发现任何变化.什么时候改变了?是否有任何简单的替代方案可以实现与以前相同的功能?
先感谢您.
我有一个数组列表,我想获得数组中元素的笛卡尔积.
我将用一个例子来说明这个更具体......
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 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-itertools ×10
python ×9
python-3.x ×3
python-2.7 ×2
cycle ×1
generator ×1
group-by ×1
iterator ×1
izip ×1
lines ×1
next ×1
permutation ×1
zip ×1