我正在使用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)
答案 0 :(得分:2)
您正在打印一个元组对象,str(tuple_object)
将产生(
,)
括号和每个包含的元素的表示形式。这就是对象的设计方式。元组,字典和列表之类的原始数据结构不是最终用户友好的值,并且print()
也不能只为您连接内容,因为不能保证通用数据结构包含要连接的字符串。
因此,您必须显式地连接内容,因为只有开发人员才能确定这些元组只包含字符串。
您还可以将元组的内容传递给print()
函数,并将分隔符设置为空字符串:
print(*p, sep='')
所有这些都与itertools
无关。任何元组都将以这种方式处理,itertools.permutations()
旨在为您提供元组,而不是联接字符串,因为它也是通用的,不能假定您始终在传递字符串,也不能假定您一直在传递字符串作为开发人员希望始终连接字符串。