2016-03-29 22 views
-3

文字列sから行列を作成する必要があります。mは与えられた行数、len(s)/ mは列数です。最初の列は、文字列sの最初のm個の文字で埋める必要があります(範囲:(m)内のすべてのiについて、0 * m + i文字)。 2番目の列は1 * m + iのようになります。 これをPythonで行うにはどうすればよいでしょうか?与えられた文字列から行列を生成する

編集: これは今までに書いたコードです。

def split_by_n(seq, n): 
"""A generator to divide a sequence into chunks of n units.""" 
    while seq: 
     yield seq[:n] 
     seq = seq[n:] 

#print list(split_by_n("1234567890",2)) 
input=list("ZPFKYLGJPNSGNMQGFGCITLVRIWMGFBLBFDSIOAJGBGAVFVHBGLFSRPNIOFSYOBTFCGRQLWWZAAJFUPGAFZSNXLTGARUVFKOLGAIWGUUCMVSEKLIAGJGGUZFBAOILVRIZPORNXWVFRGNMEGCEUNUZSPNIUAHFRQLWALHWEQGQKDFDCCKLUZWFSITKWIKLSMUQKNJUWRTKZAHJGABKDEGEMNCVIMBFRNYXSSKYPWLWHUKKISHFAJPOOFGJBJTBXXSGTRYAJGBNRMYHOGXQBLSFEWVUCHRLEJWAQBIWFRLWSSKRKSBFRAKDFJVRGZUOCJUZEKWAPIQSBRYM") 
l = list(split_by_n(input,6)) 

for i in range(len(l[-2])-len(l[-1])): 
    l[-1].append('$') 

print l 
+1

例の入力と出力は貴重です。すでにどのコードをお持ちですか? – Kupiakos

+2

最良の方法は、あなた自身が問題を解決しようとしていて、_特定の問題に遭遇した場合にスタックオーバーフローになることです。 – tamasgal

+0

あなたの 'l'はあなたがすでに望んでいるようです。具体的に何をしたいですか? –

答えて

0

私はあなたのコメントから、与えられた文字列から形成されたマトリックスの転置をしたいと思ったことを知りました。あなたのコードは、指定された文字列から行列を作成します。あなたのコードをちょっと微調整し、転置用のコードを追加しました。

def split_by_n(seq, n): 
    while seq: 
     yield seq[:n] 
     seq = seq[n:] 


def make_matrix(string): 
    col_count = 6 
    matrix = list(split_by_n(string,6)) 
    row_count = len(matrix) 

    # the last row has "less_by" fewer elements than the rest of the rows 
    less_by = len(matrix[-2]) - len(matrix[-1]) 
    matrix[-1] += '$' * less_by 

    return matrix 


def make_transpose(matrix): 
    col_count = len(matrix[0]) 
    transpose = [] 
    for i in range(col_count): 
     transpose.append([row[i] for row in matrix]) 

    return transpose 


string = list("ZPFKYLGJPNSGNMQGFGCITLVRIWMGFBLBFDSIOAJGBGAVFVHBGLFSRPNIOFSYOBTFCGRQLWWZAAJFUPGAFZSNXLTGARUVFKOLGAIWGUUCMVSEKLIAGJGGUZFBAOILVRIZPORNXWVFRGNMEGCEUNUZSPNIUAHFRQLWALHWEQGQKDFDCCKLUZWFSITKWIKLSMUQKNJUWRTKZAHJGABKDEGEMNCVIMBFRNYXSSKYPWLWHUKKISHFAJPOOFGJBJTBXXSGTRYAJGBNRMYHOGXQBLSFEWVUCHRLEJWAQBIWFRLWSSKRKSBFRAKDFJVRGZUOCJUZEKWAPIQSBRYM") 
matrix = make_matrix(string) 

transpose = make_transpose(matrix) 

for e in matrix: 
    print(e) 

print('\nThe transpose:') 
for e in transpose: 
    print(e) 

出力:

['Z', 'P', 'F', 'K', 'Y', 'L'] 
['G', 'J', 'P', 'N', 'S', 'G'] 
['N', 'M', 'Q', 'G', 'F', 'G'] 
['C', 'I', 'T', 'L', 'V', 'R'] 
['I', 'W', 'M', 'G', 'F', 'B'] 
['L', 'B', 'F', 'D', 'S', 'I'] 
['O', 'A', 'J', 'G', 'B', 'G'] 
['A', 'V', 'F', 'V', 'H', 'B'] 
['G', 'L', 'F', 'S', 'R', 'P'] 
['N', 'I', 'O', 'F', 'S', 'Y'] 
['O', 'B', 'T', 'F', 'C', 'G'] 
['R', 'Q', 'L', 'W', 'W', 'Z'] 
['A', 'A', 'J', 'F', 'U', 'P'] 
['G', 'A', 'F', 'Z', 'S', 'N'] 
['X', 'L', 'T', 'G', 'A', 'R'] 
['U', 'V', 'F', 'K', 'O', 'L'] 
['G', 'A', 'I', 'W', 'G', 'U'] 
['U', 'C', 'M', 'V', 'S', 'E'] 
['K', 'L', 'I', 'A', 'G', 'J'] 
['G', 'G', 'U', 'Z', 'F', 'B'] 
['A', 'O', 'I', 'L', 'V', 'R'] 
['I', 'Z', 'P', 'O', 'R', 'N'] 
['X', 'W', 'V', 'F', 'R', 'G'] 
['N', 'M', 'E', 'G', 'C', 'E'] 
['U', 'N', 'U', 'Z', 'S', 'P'] 
['N', 'I', 'U', 'A', 'H', 'F'] 
['R', 'Q', 'L', 'W', 'A', 'L'] 
['H', 'W', 'E', 'Q', 'G', 'Q'] 
['K', 'D', 'F', 'D', 'C', 'C'] 
['K', 'L', 'U', 'Z', 'W', 'F'] 
['S', 'I', 'T', 'K', 'W', 'I'] 
['K', 'L', 'S', 'M', 'U', 'Q'] 
['K', 'N', 'J', 'U', 'W', 'R'] 
['T', 'K', 'Z', 'A', 'H', 'J'] 
['G', 'A', 'B', 'K', 'D', 'E'] 
['G', 'E', 'M', 'N', 'C', 'V'] 
['I', 'M', 'B', 'F', 'R', 'N'] 
['Y', 'X', 'S', 'S', 'K', 'Y'] 
['P', 'W', 'L', 'W', 'H', 'U'] 
['K', 'K', 'I', 'S', 'H', 'F'] 
['A', 'J', 'P', 'O', 'O', 'F'] 
['G', 'J', 'B', 'J', 'T', 'B'] 
['X', 'X', 'S', 'G', 'T', 'R'] 
['Y', 'A', 'J', 'G', 'B', 'N'] 
['R', 'M', 'Y', 'H', 'O', 'G'] 
['X', 'Q', 'B', 'L', 'S', 'F'] 
['E', 'W', 'V', 'U', 'C', 'H'] 
['R', 'L', 'E', 'J', 'W', 'A'] 
['Q', 'B', 'I', 'W', 'F', 'R'] 
['L', 'W', 'S', 'S', 'K', 'R'] 
['K', 'S', 'B', 'F', 'R', 'A'] 
['K', 'D', 'F', 'J', 'V', 'R'] 
['G', 'Z', 'U', 'O', 'C', 'J'] 
['U', 'Z', 'E', 'K', 'W', 'A'] 
['P', 'I', 'Q', 'S', 'B', 'R'] 
['Y', 'M', '$', '$', '$', '$'] 

The transpose: 
['Z', 'G', 'N', 'C', 'I', 'L', 'O', 'A', 'G', 'N', 'O', 'R', 'A', 'G', 'X', 'U', 'G', 'U', 'K', 'G', 'A', 'I', 'X', 'N', 'U', 'N', 'R', 'H', 'K', 'K', 'S', 'K', 'K', 'T', 'G', 'G', 'I', 'Y', 'P', 'K', 'A', 'G', 'X', 'Y', 'R', 'X', 'E', 'R', 'Q', 'L', 'K', 'K', 'G', 'U', 'P', 'Y'] 
['P', 'J', 'M', 'I', 'W', 'B', 'A', 'V', 'L', 'I', 'B', 'Q', 'A', 'A', 'L', 'V', 'A', 'C', 'L', 'G', 'O', 'Z', 'W', 'M', 'N', 'I', 'Q', 'W', 'D', 'L', 'I', 'L', 'N', 'K', 'A', 'E', 'M', 'X', 'W', 'K', 'J', 'J', 'X', 'A', 'M', 'Q', 'W', 'L', 'B', 'W', 'S', 'D', 'Z', 'Z', 'I', 'M'] 
['F', 'P', 'Q', 'T', 'M', 'F', 'J', 'F', 'F', 'O', 'T', 'L', 'J', 'F', 'T', 'F', 'I', 'M', 'I', 'U', 'I', 'P', 'V', 'E', 'U', 'U', 'L', 'E', 'F', 'U', 'T', 'S', 'J', 'Z', 'B', 'M', 'B', 'S', 'L', 'I', 'P', 'B', 'S', 'J', 'Y', 'B', 'V', 'E', 'I', 'S', 'B', 'F', 'U', 'E', 'Q', '$'] 
['K', 'N', 'G', 'L', 'G', 'D', 'G', 'V', 'S', 'F', 'F', 'W', 'F', 'Z', 'G', 'K', 'W', 'V', 'A', 'Z', 'L', 'O', 'F', 'G', 'Z', 'A', 'W', 'Q', 'D', 'Z', 'K', 'M', 'U', 'A', 'K', 'N', 'F', 'S', 'W', 'S', 'O', 'J', 'G', 'G', 'H', 'L', 'U', 'J', 'W', 'S', 'F', 'J', 'O', 'K', 'S', '$'] 
['Y', 'S', 'F', 'V', 'F', 'S', 'B', 'H', 'R', 'S', 'C', 'W', 'U', 'S', 'A', 'O', 'G', 'S', 'G', 'F', 'V', 'R', 'R', 'C', 'S', 'H', 'A', 'G', 'C', 'W', 'W', 'U', 'W', 'H', 'D', 'C', 'R', 'K', 'H', 'H', 'O', 'T', 'T', 'B', 'O', 'S', 'C', 'W', 'F', 'K', 'R', 'V', 'C', 'W', 'B', '$'] 
['L', 'G', 'G', 'R', 'B', 'I', 'G', 'B', 'P', 'Y', 'G', 'Z', 'P', 'N', 'R', 'L', 'U', 'E', 'J', 'B', 'R', 'N', 'G', 'E', 'P', 'F', 'L', 'Q', 'C', 'F', 'I', 'Q', 'R', 'J', 'E', 'V', 'N', 'Y', 'U', 'F', 'F', 'B', 'R', 'N', 'G', 'F', 'H', 'A', 'R', 'R', 'A', 'R', 'J', 'A', 'R', '$'] 
関連する問題