2017-07-20 22 views
0

私はこの問題に苦労しています。誰かが私を正しい方向に向けることができたら、私は感謝します。2次配列を入力してソートして印刷する際に問題がありますか?

私の問題は次のとおりです。まず、ユーザーから3つの入力を取得する必要があります。まず、私の2Dリストの寸法(MとN)をユーザーから取得する必要があります。次に、行列の各行のユーザー入力を1行ずつ読み込みます。最後の入力は、並べ替えるリストの要素です。各入力行が4 ints長だった場合、私は2番目のintでソートすることがあります。

次に、私の実際の機能では、これを並べ替えて印刷しなければなりません。

2d配列を初期化するためにネストされたforループを使用しようとしました。私は 何かがここで間違っているかもしれないと疑うが、わからない。私は考えている 私はそれをどのように並べ替えるかを考え出した。しかし、無効な構文を示す 印刷機能でエラーが発生します。しかし、文法は私にとっては のようです。すべてのヘルプは感謝

n,m = map(int,raw_input().split()) 
my_list = [] 
for x in range(n): 
    row=[] 
    for y in range(m): 
     row.append(list(map(int,raw_input()))) 
    my_list.append(row) 

k = int(raw_input()) 

sorted_list=sorted(my_list,key=lambda x:x[k]) 

for row in sorted_list: 
    for val in row: 
     print '{:4}'.format(val), 
    print 

以下は私のコードです。

+1

使用しているPythonのバージョンは何ですか?あなたのコードは2でうまく動作しますが、3では、印刷の入力の前後に括弧やその他の変更が必要です。 –

+0

問題のどの部分を苦労していますか? – martineau

答えて

0

私はあなたが望むものを、これを推測する:(部品がやっていることが明らかになるように、私はいくつかの文字列を印刷したもの。)

そして、挿入されたディメンションは、それを明確に私たちではないことを確認するために意図的に維持されていません次のコードであらゆる種類の検証を行います。コンソールで

print 'Enter dimension col X row:' 
col, row = map(int, raw_input().split()) 
print 'col: ' + str(col) + '\trow: ' + str(row) 

my_list = [] 
for r in range(row): 
    print 'Insert row: ' + str(r) 
    my_list.append(map(int, raw_input().split())) 
print 'You have inserted: ' 
print(my_list) 

print 'Position by which the array to be sorted: ' 
index = int(raw_input()) 
sorted_list = sorted(my_list, key=lambda x: x[index]) 
print 'Sorted by: index ' + str(index) 
print sorted_list 


# Checking if all row has >= 4 elements 
def elem_more_then_4(my_2d_array): 
    for row in my_2d_array: 
     if len(row) < 4: 
      return False 
    return True 


if elem_more_then_4(my_list): 
    sorted_list_ = sorted(my_list, key=lambda x: x[1]) 
    print 'Sorted by 2nd element: ' 
    print sorted_list_ 

相互作用:

Enter dimension col X row: 
5 4 
col: 5 row: 4 
Insert row: 0 
1 2 1 5 4 
Insert row: 1 
5 1 24 3 
Insert row: 2 
3 2 1 4 2 
Insert row: 3 
5 2 1 4 3 
You have inserted: 
[[1, 2, 1, 5, 4], [5, 1, 24, 3], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3]] 
Position by which the array to be sorted: 
3 
Sorted by: index 3 
[[5, 1, 24, 3], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3], [1, 2, 1, 5, 4]] 
Sorted by 2nd element: 
[[5, 1, 24, 3], [1, 2, 1, 5, 4], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3]] 
0

@Samクレイグはコメント何に同意します。構文エラーの問題を解決するには、Python 3.xで印刷した後にかっこが必要です。

もう一つの問題は、配列を予想よりも高次元のマトリックスにマッピングしているように思えることです。あなたは、単にrow.append(int型(入力()))の代わりに、row.append使用する場合があります(リスト(マップ(int型、raw_inputを())))

n,m = map(int,input().split()) 
    my_list = [] 
    for x in range(n): 
     row=[] 
     for y in range(m): 
      row.append(int(input())) 
     my_list.append(row) 

    k = int(input()) 

    sorted_list=sorted(my_list,key=lambda x:x[k]) 

    for row in sorted_list: 
     for val in row: 
      print('{:4}'.format(val)) 
    print 

それがお役に立てば幸いです。

関連する問題