-1

角かっことコンマを使わずにコードを出力したいのですが、次のようになります。

import itertools
import pprint
run = 1
while run != 0:
    number = raw_input('\nPlease type between 4 and 8 digits and/or letters to run permutation: ')

    if len(number) >= 4 and len(number) <= 8:
        per = list(itertools.permutations(number))
        pprint.pprint(per)
        print '\nNumber of possible combinations: ',len(per),'\n'

    elif number == 'exit':
        run = 0

    else:
        raw_input('length must be 4 to 8 digits and/or letters. Press enter to exit')
        run = 0

そのため、新しい行に各組み合わせのリストが出力されます。角かっことカンマを使用せずに印刷するにはどうすればよいですか?それでも、per[x]を呼び出して特定の組み合わせを取得できるようにしたいと思います。助けていただければ幸いです。ありがとうございました。

4

7 に答える 7

0

答えの他のバリエーション

(lambda x: ''.join(x))(x)

于 2013-01-23T09:23:42.877 に答える
0

pprint.pprintオブジェクトの repr を出力する を使用する代わりに、改行をリテラルに変更しない通常の出力を使用する必要があり'\n'ます。

print('\n'.join(map(str, per)))

文字列のリストが予想されるため、をマップstrする必要がありました。perstring.join

編集:出力例は、各順列がコンマで区切られていないことを示しており、リストの括弧は表示されません。

>>> print('\n'.join(map(str, itertools.permutations([0, 1, 2, 3]))))
(0, 1, 2, 3)
(0, 1, 3, 2)
(0, 2, 1, 3)
(0, 2, 3, 1)
(0, 3, 1, 2)
(0, 3, 2, 1)
(1, 0, 2, 3)
(1, 0, 3, 2)
(1, 2, 0, 3)
(1, 2, 3, 0)
(1, 3, 0, 2)
(1, 3, 2, 0)
(2, 0, 1, 3)
(2, 0, 3, 1)
(2, 1, 0, 3)
(2, 1, 3, 0)
(2, 3, 0, 1)
(2, 3, 1, 0)
(3, 0, 1, 2)
(3, 0, 2, 1)
(3, 1, 0, 2)
(3, 1, 2, 0)
(3, 2, 0, 1)
(3, 2, 1, 0)
于 2012-04-25T16:51:32.150 に答える
0

pprint.pprint次のようなものに置き換えます。

for line in per:
    print ''.join(line)

コード スニペットのよりコンパクトなバージョンを次に示します。

import itertools

while True:
    user_input = raw_input('\n4 to 8 digits or letters (type exit to quit): ')
    if user_input == 'exit':
        break
    if 4 <= len(user_input) <= 8:
        # no need for a list here, just unfold on the go
        # counting via enumerate
        for i, p in enumerate(itertools.permutations(user_input)):
            print(''.join(p))
        print('#permutations: %s' % i)
于 2012-04-25T16:52:27.200 に答える
0

それらをループして、好きな文字 (ここではスペース) で区切ってそれぞれを印刷します。

#pprint.pprint(per)
for p in per:
    print ' '.join(p)
于 2012-04-25T16:52:53.347 に答える
0

pprint() を独自のコードに置き換えて、データを出力するだけです。このようなもの:

for i in per:
    print i
于 2012-04-25T16:53:05.343 に答える
0

使用するjoin()

per = list(itertools.permutations(number))
        for x in per:
            print "".join(x)
        print '\nNumber of possible combinations: ',len(per),'\n'
于 2012-04-25T16:55:02.223 に答える
0

リストを文字列に変換してから、括弧とコンマを削除します。

x = str(per)[1 : -1]
x.replace(",", "")
print x
于 2012-04-25T16:57:00.197 に答える