Python和列表组合

时间:2015-02-02 03:14:07

标签: python-3.x

我是python的新手,并且在编程方面非常沮丧。 我有一项任务要完成。我需要加载file.txt(每行有一个字母),然后创建另一个包含所有组合的file2.txt。这是我设法启动的代码

from itertools import product    
def main():
    list = ('A', 'B', 'C', 'D')
    for word in product(list, repeat=2):
        print (''.join(word))
if __name__ == "__main__": main()

它给了我这个

AA
AB
AC
AD
BA
BB
BC
BD
CA
CB
CC
CD
DA
DB
DC
DD

这个不起作用。

from itertools import product

def main():

    list = open('recnik2.txt', 'a')    #I gess python cant read like this
    for word in product(list, repeat=2):
        print (''.join(word))


if __name__ == "__main__": main()

它给了我这个错误

Traceback (most recent call last):
  File "C:\Users\"Ideletedthis"\product.py", line 11, in <module>
if __name__ == "__main__": main()
  File "C:\Users\"Ideletedthis"\product.py", line 7, in main
    for word in product(list, repeat=2):
io.UnsupportedOperation: not readable

Any1可以解释原因,也许可以提供更好的解决方案

2 个答案:

答案 0 :(得分:0)

操作系统在处理文件时为您提供了多种选择。一种选择是阅读内容。另一个是写信给它。您通常必须指定要执行的每个选项。这是一种安全机制。

在您的代码中,您要求操作系统通过Python“追加”到recnik2.txt文件。追加是一种内容写入文件的方法,从文件的末尾开始。但是,由于您试图从仅使用“写入”访问权限打开的文件中读取,操作系统会告诉您该文件“不可读”。

尝试使用open('recnik2.txt', 'r')打开“阅读”权限。 Read this如果您对其他选项感到好奇。

答案 1 :(得分:0)

我设法纠正了&#34;阅读&#34;模式并使用&#34; write&#34;创建另一个文件。 但我越了解我遇到的问题就越多。这是代码

from itertools import product

def main():

    infile = open('recnik2.txt', 'r')
    outfile = open('recnik3.txt', 'w')
    for word in product(infile, repeat=2):
    print (''.join(word), file=outfile)
    infile.close()
    outfile.close()

if __name__ == "__main__": main()

它给了这个。

A
A

A
B

A
C

A
D
B
A

B
B

B
C

B
D
C
A

C
B

C
C

C
D
DA

DB

DC

DD

我知道print()必须打印可以使用end =&#39;&#39;删除的空行。 但这是组合之间的界限。当它跳到另一个字母时,那条线就不存在了。看看

A
D
B
A 

B和D doenst有空间,所以如果我把end =&#39;&#39;它会放置

A
DB
A

令人困惑。为什么它会分开组合?为什么AA并不紧挨着,DD就像我需要的那样。 很抱歉,如果我这是noob的问题,但无法找到解释此问题的教程。 Python指南有很多,但没有详细信息