私は入力/出力を行っており、プログラムのロジックを理解しようとしていました。名前とコースが与えられているので、名前をアルファベット順にファイルに書き込み、その後に彼らが取ったコースを書きます。私はそれを達成し、進行中の1つのリストにすべてを書きました. 今、テキストファイルに書き込もうとしています"name, class, .....(if more than one class)"
が、それを1次元リストにしたので、プログラムは名前とクラスを一緒に模索するのではなく、項目ごとに書き込みます。例、新しいファイルを読みたい
Ashley,MATH 1426,PHYS 1443
Jonathan,IE 3312
Joseph,IE 3312
Nang,MATH 1426
Ram,IE 3312
Randal,IE 3301,MATH 2325,PHYS 1443
Sol,IE 3301
1 つのリストがある場合、これを行うにはどうすればよいですか。のようなものを書こうと思っていた
while name, remains the same, write the classes, when name changes print newline....., write name and classes
これに関する問題は、1 つのリストであり、名前の変更を検出する方法がわかりません。1 つの名前とそのクラスを含む各サブリストを 2dlist に変換する方法はありますか? これが私の元の 2 次元リストで、組織化されていない形式です。
[['Adam', 'PHYS 1443'], ['Ashley', 'IE 3312'], ['Ashley', 'PHYS 1443'], ['August', 'PHYS 1444'], ['Baron', 'PHYS 1443'], ['Christopher', 'IE 3301'], ['Christopher', 'CSE 1320'], ['Christopher', 'PHYS 1443'], ['Dylan', 'CSE 1310'], ['Henry', 'PHYS 1444'], ['James', 'IE 3301'], ['James', 'PHYS 1443'], ['Jonathan', 'IE 3312'], ['Krishna', 'CSE 1310'], ['Luis', 'CSE 1310'], ['Michael', 'IE 3301'], ['Nang', 'PHYS 1443'], ['Pramod', 'PHYS 1444'], ['Pramod', 'PHYS 1443'], ['Saroj', 'IE 3301'], ['Saroj', 'MATH 1426'], ['Sol', 'CSE 1310'], ['Timothy', 'MATH 2325'], ['Timothy', 'IE 3301']]
整理するために、次のコードを書き、それをリストに追加しましたが、これは間違いでした
d = []
size = len(c)
two = []
d.append(c[0][0])
d.append(c[0][1])
i = 1
while i < size :
# if current name = previous name, add classes
if c[i][0]==c[i-1][0] :
d.append(c[i][1])
# if current name != previous name, add name and classes
if c[i][0]!= c[i-1][0] :
d.append(c[i][0])
d.append(c[i][1])
i = i + 1
出力は
['Adam', 'PHYS 1443', 'Ashley', 'IE 3312', 'PHYS 1443', 'August', 'PHYS 1444', 'Baron', 'PHYS 1443', 'Christopher', 'IE 3301', 'CSE 1320', 'PHYS 1443', 'Dylan', 'CSE 1310', 'Henry', 'PHYS 1444', 'James', 'IE 3301', 'PHYS 1443', 'Jonathan', 'IE 3312', 'Krishna', 'CSE 1310', 'Luis', 'CSE 1310', 'Michael', 'IE 3301', 'Nang', 'PHYS 1443', 'Pramod', 'PHYS 1444', 'PHYS 1443', 'Saroj', 'IE 3301', 'MATH 1426', 'Sol', 'CSE 1310', 'Timothy', 'MATH 2325', 'IE 3301']
これに対する簡単な修正はありますか?