Ваш первый код дела неверен:
list_of_labels = [Label(root, text = '-')]*3 # <-- create array of 3 items refer to same Label
for i in range(len(list_of_labels)):
list_of_labels.grid(row = 0, column = i) # <-- should be list_of_labels[i].grid(...)
Правильный код должен быть:
list_of_labels = [tk.Label(root, text = '-') for _ in range(3)]
for i in range(len(list_of_labels)):
list_of_labels[i].grid(row = 0, column = i)
Примечание. Второй вариант кода является предпочтительным способом.