将字符和输出组合到文件中

时间:2013-11-08 00:53:20

标签: python python-3.x output

我有一个简单的问题,有没有办法让python合并一系列字符,合并它们,然后将它们放入文本文件中?

我的意思是,如果我有字符,“a”,“b”,“3”,“F”,“@”等,有没有办法以各种方式组合它们,“ abF“,”F @ b“,”3F @ ab“等,然后将它们分别打印在文本文件的单独一行上?

到目前为止,我得到的是:

lst = ("ab@F3")
list1 = list()
for ch in lst:
    list1.append(ch)
    print(list1)

我希望它能够输出类似“abF3”和“3Fab”和“Fb3a”的内容

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

import itertools
with open('output.txt', 'w') as f:
    for n in range(1,5):
        for p in itertools.permutations('ab@F3',n):
            print(''.join(p), file=f)

基于上述但有一些修正

答案 1 :(得分:2)

从您的示例输出中,您看起来想要5个元素集的所有120个4元素排列。这很简单itertools.permutations

list1 = list(itertools.permutations(lst, 4))

您似乎也希望它们按随机顺序排列,但这很简单:

random.shuffle(list1)

如果您想要任意个字符数的所有排列(好吧,包括1到5之间的任何数字),您只需将每个数字的permutations链接在一起:

perms = (itertools.permutations(lst, n) for n in range(1, 6))
list1 = list(itertools.chain.from_iterable(perms))

有120 + 120 + 60 + 20 + 5 = 325这些。而且,如果你想要它们是随机顺序,只需要shuffle

你想要做的几乎任何合理的事情都很容易做到 - 但是直到你知道,并且可以向人类解释你真正想要的是什么,你将无法向Python解释它任

答案 2 :(得分:1)

这不是100%清楚你的意思,但我想这就是你想要的:

import itertools

chain = itertools.chain(*(itertools.permutations(chars, n) for n in xrange(1, len(chars) + 1)))
print ' AND '.join('"%s"' % ''.join(x) for x in chain)

答案 3 :(得分:0)

试试这个。

from itertools import permutations
chars = 'ab@F3'
for r in range(len(chars)):
    for p in permutations('ab@F3', r+1):
        print ''.join(p)

你会得到这些角色的每一个排列。在这个例子中,有325个排列。

希望这有帮助。

答案 4 :(得分:0)

一个班轮(列表理解)方法(因为我不想添加重复的答案)

import itertools
my_chars = "ab3F@"
print [''.join(p) for i in range(1, len(my_chars)+1) for p in itertools.permutations(my_chars,i)]