如何显示使用itertools生成的排列?

时间:2019-06-09 14:12:35

标签: python itertools

我正在使用string.ascii_letters模块生成并存储所有ascii字母到一个字母元组中,然后使用此元组通过itertools库生成字符串

我使用循环来遍历排列函数生成的所有单词。

alphabets=string.ascii_letters
for p in permutations(alphabets,1):
            print(p)

当我只打印p

('a',) (“ a”,“ b”) (“ a”,“ b”,“ c”) ('A B C D') (“ a”,“ b”,“ c”,“ d”,“ e”)

我搜索了一下,才知道我必须使用 print(“”。join(p)) 为什么会这样,因为它只是生成的元组,所以我不能说,因为那是 我们如何遍历元组

for p in ...
    print(p)

1 个答案:

答案 0 :(得分:2)

您正在打印一个元组对象,str(tuple_object)将产生()括号和每个包含的元素的表示形式。这就是对象的设计方式。元组,字典和列表之类的原始数据结构不是最终用户友好的值,并且print()也不能只为您连接内容,因为不能保证通用数据结构包含要连接的字符串。

因此,您必须显式地连接内容,因为只有开发人员才能确定这些元组只包含字符串。

您还可以将元组的内容传递给print()函数,并将分隔符设置为空字符串:

print(*p, sep='')

所有这些都与itertools无关。任何元组都将以这种方式处理,itertools.permutations()旨在为您提供元组,而不是联接字符串,因为它也是通用的,不能假定您始终在传递字符串,也不能假定您一直在传递字符串作为开发人员希望始终连接字符串。