版权声明:禁止转载至其它平台,转载至博客需带上此文链接。 https://blog.csdn.net/qq_41841569/article/details/86306760
我的目标是能够生成长度为x的所有可能的字符串(字母和数字),并且能够激活每个字符串的代码块. (像迭代器一样)唯一的问题是itertools中的那些不会在同一个字符串中复制字母.例如:
我得到“ABC”“BAC”“CAB”等而不是“AAA”.
有什么建议?
使用 itertools.product()
:
>>> import itertools >>> map(''.join, itertools.product('ABC', repeat=3)) ['AAA', 'AAB', 'AAC', 'ABA', 'ABB', 'ABC', 'ACA', 'ACB', 'ACC', 'BAA', 'BAB', 'BAC', 'BBA', 'BBB', 'BBC', 'BCA', 'BCB', 'BCC', 'CAA', 'CAB', 'CAC', 'CBA', 'CBB', 'CBC', 'CCA', 'CCB', 'CCC']
请注意,创建包含所有组合的列表对于较长的字符串来说效率非常低 – 而不是迭代它们:
for string in itertools.imap(''.join, itertools.product('ABC', repeat=3)): print string
要获取所有字符和数字,请使用string.uppercase string.lowercase string.digits.