0

この問題を解決するためのマトリックスを作成するために、リストのリストを使用することにしました。このマトリックスに、まったく異なるリストの値に依存する値を入力しようとしています。

私は、学生が90分間のセッションでプレイするコンピューターゲームからのチャットデータを分析するプロジェクトに取り組んでいます。12人の参加者のそれぞれが他のプレイヤーに送信したメッセージの数を追跡する必要があります。データログには数千行の出力があるので、Pythonプログラムでチャットを含む各行を調べ、ログに記録された各チャットのリストを作成します。

データを解析して、話者の名前のみを保持するWHOというリストと、受信者の名前を保持するWHOMという別のリストを作成しました。これは1から11の名前である可能性があります。S1という名前のプレーヤーがS3、S4、およびS7にメッセージを送信したとしましょう。これらのプレーヤーにメッセージを送信するS1の集計を増やしたいのですが、リストは次のようになっています。

who = ["S1"]
whom = ["S3", "S4", "S7"]

だから私は次のように私のマトリックスを作成しました

rows = 12
columns = 12

def makeList(size):
    mylist = []
    for i in range(size):
        mylist.append(0)  #make a list of variable size full of 0's.
    return mylist

def makeMatrix(rows,columns):
    matrix = []
    for i in range(columns):
        matrix.append(makeList(rows)) #tells makeList() what size to be, appends the list therein to this new matrix.
    return matrix

matrix = makeMatrix(rows, columns)

ここから、非常に簡単に行列を操作できます。

S1 = 0
S2 = 1
S3 = 2
S4 = 3
S5 = 4
S6 = 5
S7 = 6
S8 = 7
S9 = 8
S10 = 9
S11 = 10
S12 = 11

matrix[S1][S3] += 1 
matrix[S1][S4] += 1 
matrix[S1][S7] += 1 

S1が問題のプレーヤーにもう一度話したことを示します。

質問:「who」と「whom」の値がマトリックスの座標を表し、マトリックスの値をインクリメントしたいのですが。マトリックスに影響を与える入力をリストに「who」と「whom」にするにはどうすればよいですか?誰かがこれを達成するループまたは関数を提案できますか?前もって感謝します!


ですから、私が考えている方向の例を示すことが役立つかもしれないと思いました。これは、以下に書いたようなforループによって達成されることがわかりました。それは実際のコードではありません、私は知っています。

for i in range (11):  #
    if who contains (S%n %i):  #check if the list "who" contains S1, S2, S3, S4... etc.   
        for k in range (11): 
            if whom contains (S%d %i) #check if the list "whom" contains S1, S2, S3, etc.,
                matrix["S"+i]["S"+k] +=1

質問:matrix [S1] [S3]を作成するにはどうすればよいですか。ここで、1と3はループ内の変数です。リストの内容を検索するifステートメントを作成するにはどうすればよいですか?

4

0 に答える 0