合并字符并输出到文件

2024-04-26 19:11:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的问题,有没有一种方法让python组合一系列字符,组合它们,然后把它们放到一个文本文件中?你知道吗

我的意思是,如果我有“a”,“b”,“3”,“F”,“@”等字符,有没有一种方法可以把它们以不同的方式组合起来,形成“abF”F@b公司", "3楼@ab,然后将它们分别打印在文本文件的一行中?你知道吗

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

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

我希望它能够输出像“abF3”和“3Fab”和“Fb3a”的东西

有什么建议吗?你知道吗


Tags: 方法inforab方式公司ch字符
3条回答

你的意思不是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)
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)

基于以上,但有一些修正

从示例输出来看,似乎需要5元素集的所有120个4元素置换。这对于^{}来说很简单:

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解释。你知道吗

相关问题 更多 >