我正在尝试将每个可能的两位数组合附加到列表中每个字符串的末尾。
字符串各八个字符,数字应替换第七个和第八个字符。
我正在使用 itertools.product()
生成这些两位数组合,但我不确定如何将这些组合附加到字符串。我尝试使用 join()
,但这会将字符串夹在两个数字之间。
我的下一次尝试在下面,但没有成功,因为您无法连接 'str'
和 'itertools.product'
对象。
for p in passwords:
candidates += list(p[:6] + itertools.product(string.digits, string.digits))
所以,密码看起来像这样
['american', 'japanese']
输出应该是
['americ00', 'americ01', 'americ02', …, 'japane98', 'japane99']
最佳答案
因为你只是在数数,所以不需要产品这可以缩写为:
lst = ['american', 'japanese']
candidates = ['{}{:02d}'.format(e[:6], i) for e in lst for i in range(100)]
与循环相似
candidates = []
for e in lst:
for i in range(100):
candidates.append('{}{:02d}'.format(e[:6], i))
如果出于某种原因真的想要产品:
['{}{}{}'.format(e[:6], i, j) for e in lst for i, j in itertools.product(string.digits, string.digits)]
这也可以推广到具有更多参数的产品
[e[:6] + ''.join(pr) for e in lst for pr in itertools.product(string.digits, string.digits, string.digits)]
关于python - 将 itertools.product() 结果附加到 Python 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28397417/