2017-11-25 42 views
0

所以我有:删除列表中所有字母的元素?

letters = list(''.join(i) for i in permutations('A''B''C''D''E''F''G''H''J''K''M''N''P''Q''R''T''V''W''X''Y''Z''1''2''3''4''5''6''7''8''9''0', 3)) 
print(letters) 

,它打印一些组合是所有字母或所有数字或两个数字和字母。我只想要两个字母和一个数字的组合。有没有办法删除所有列表元素不包含两个字母和数字?

P.S.我是一个Python新手,所以请尽量让我的答案可以理解。

+1

我想你可以自己解决这个问题,因为你已经知道如何使用iterator甚至itertools。所以似乎没有需要的建议。 –

回答

2

你只显示一点点工作,所以我只提示一下。处理这些提示,如果您无法完成,请向我们展示您的尝试,我们可以进一步帮助您。

考虑到你的起始代码,你显然不关心你的三元组的顺序,并且你想要三元组中的三项的所有排列。最好是生成你想要的东西,而不是生成更多,并删除你不想要的东西。这里是你如何使用itertools来做到这一点。

对于每个三元组,首先从字母表中选择2个字母的组合。然后选择一个数字。鉴于这些选择,将这三个项目排列成所有订单。

您可以使用combinations,,permutations和列表理解,使用itertools完成上述每个步骤。您可以通过嵌套这些函数在一个声明中完成所有操作,或者为了便于阅读而分发它。我的首选答案有两行,第一行使用生成器理解来创建一个用于第二行的生成器。您还应该创建两个常量,一个用于保存字母,另一个用于保存数字。

我怀疑你真的想打印出整个结果列表,里面有19,500个字符串。

+0

不错,干净的答案。 –