如何在Python中生成2位整数的结构化列表?

时间:2019-01-02 09:11:15

标签: c# python

我正在尝试在Python中复制附带的C#代码,但是不幸的是,我对Python的了解比对前者要少得多。该代码本质上会生成2个字符/数字值的列表,例如aa,ab,ac,ad等。它包括A-Z,a-z和0-9的组合。

我研究了django.utils.crypto模块,但这创建了一个随机输出,而我的C#代码输出在运行时给出了确切的组合数量。这是我尝试使用Django模块的方法:

get_random_string(length=2, 
allowed_chars=u'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')

我尝试过的其他选项也做了类似的事情,所以我有点茫然。我了解Python的基础知识,但不幸的是,我还没有足够的能力在Python中复制C#代码。 C#代码:

var alpha = 
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var q = alpha.Select(x => x.ToString());
int size = 2;
for (int i = 0; i < size - 1; i++)
    q = q.SelectMany(x => alphabet, (x, y) => x + y);

foreach (var item in q)
    Console.WriteLine(item);

转换为python后,该函数应以2位整数生成大约62 ^ 2个值的组合。

1 个答案:

答案 0 :(得分:1)

这是一个例子

alpha = 'abc'
from itertools import permutations, combinations_with_replacement
[''.join(i) for i in list(set(combinations_with_replacement(alpha, 2)) | set(permutations(alpha, 2)))]

# Output -> ['ab', 'ba', 'aa', 'cc', 'bb', 'cb', 'ac', 'ca', 'bc']  which is 3^2

现在按照@Adam Feor在评论中的建议创建alpha

import string 
alpha = string.ascii_letters + string.digits 
print(alpha)
Output -> abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789