我正在编写将列表列表转换为矩阵的代码。此功能应可扩展到更大的列表,我的输入仅是为了使问题更易于解决。我仍然是初学者,所以我需要一点帮助=)
-input:在示例输入中,list1是水果和颜色对的数据集:
list1 = [[["apple", "red"], " 1 "],[["apple", "yellow"], " 1 "], [["apple", "green"], " 1 "]]
list1 += [[["lemon", "red"], " 0 "], [["lemon", "yellow"], " 1 "], [["lemon", "green"], " 0 "]]
list1 += [[["pear ", "red"], " 0 "], [["pear", "yellow"], " 0 "], [["pear", "green"], " 1 "]]
-所需的输出:
['', 'apple', 'lemon', 'pear']
['red', ' 1 ', 0, 0]
['yellow', 0, ' 1 ', 0]
['green', 1, 0, ' 1 ']
-我的输出
['///', 'apple', 'lemon', 'pear']
['red', ' 1 ', 0, 0]
['yellow', 0, ' 1 ', 0]
['green', 0, 0, ' 0 ']
------我的尝试:-----
# create empty matrix
matrix=[]
for row in range(4):
new_row =[]
for col in range(4):
new_row.append(0) #if starting all-0
matrix.append(new_row)
# add object names
names = ["///", "apple", "lemon", "pear"]
color = ["///", "red", "yellow", "green"]
color = color[::-1]
matrix[0] = names
for row in matrix:
row[0] = color.pop()
second_obj = 0
for row in range(4):
for col in range(4):
if list[row][0][0] == matrix[0][col]:
while list[row][0][1] != matrix[second_obj][0]:
second_obj += 1
else:
if matrix[row][row] != "///":
matrix[row][row] = list[row][1]
second_obj = 0
慕标琳琳
相关分类