我决定使用列表列表来制作矩阵来解决这个问题。我希望用依赖于完全不同列表中的值的值填充这个矩阵。
我在一个项目中分析来自学生玩 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 已与相关玩家再次交谈。
问题:我希望“谁”和“谁”中的值表示矩阵中的坐标,然后增加矩阵中的值。我怎样才能使列表“谁”和“谁”一些影响矩阵的输入?有人可以建议一个循环或一个函数来完成这个吗?提前致谢!
所以我认为展示一个我正在思考的方向的例子可能会有所帮助。我可以看到这是通过一个 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
问题:如何编写矩阵[S1][S3],其中 1 和 3 是循环中的变量?如何创建一个查找列表内容的 if 语句?