私はpythonのnoobと私は問題に立ち往生しています。Pythonのファイル処理
filehandler = open("data.txt", "r")
alist = filehandler.readlines()
def insertionSort(alist):
for line in alist:
line = list(map(int, line.split()))
print(line)
for index in range(2, len(line)):
currentvalue = line[index]
position = index
while position>1 and line[position-1]>currentvalue:
line[position]=line[position-1]
position = position-1
line[position]=currentvalue
print(line)
insertionSort(alist)
for line in alist:
print line
出力:
[4, 19, 2, 5, 11]
[4, 2, 5, 11, 19]
[8, 1, 2, 3, 4, 5, 6, 1, 2]
[8, 1, 1, 2, 2, 3, 4, 5, 6]
4 19 2 5 11
8 1 2 3 4 5 6 1 2
私は、ファイルから値の行を並べ替えることになっています。行の最初の値はソートされる値の数を表します。私は並べ替えられた順序でファイルの値を表示するはずです。
insertionSortのプリント呼び出しは、デバッグの目的にすぎません。
出力の上位4行は、挿入ソートが機能しているようです。 insertSortを呼び出した後にリストを印刷すると、値がソートされない理由を理解できません。
私はスタックオーバーフローとPythonの新機能ですので、この質問が間違っている場合はお知らせください。
を私はあなたの問題を理解している場合、ファイル内の行が変更されなかった理由を迷っていますか?ファイル内の値を並べ替えることを意味しますか?私は少し混乱してごめんなさい、もう少し説明してみてください –
あなたはラインを分割することから作成するリストをソートしています。あなたがこれをするとき、あなたは 'line'や' alist'を変更していません。 – Barmar
これはhw質問ですか?そうでない場合は、常に 'sorted'関数を使用することができます – Alter