您可以将其用作生成矩阵的更简单方法:
>>> LoL=[['#']*4 for i in range(5)]
>>> LoL
[['#', '#', '#', '#'], ['#', '#', '#', '#'], ['#', '#', '#', '#'], ['#', '#', '#', '#'], ['#', '#', '#', '#']]
并使用 .insert 将元素添加到给定位置的列表中:
>>> LoL.insert(1,'A')
>>> LoL
[['#', '#', '#', '#'], 'A', ['#', '#', '#', '#'], ['#', '#', '#', '#'], ['#', '#', '#', '#'], ['#', '#', '#', '#']]
问题可能在于混合类型。您可以通过使用更多级别的列表来解决此问题:
>>> LoL=[[['#']*4] for i in range(5)]
>>> LoL
[[['#', '#', '#', '#']], [['#', '#', '#', '#']], [['#', '#', '#', '#']], [['#', '#', '#', '#']], [['#', '#', '#', '#']]]
然后你可以使用追加而不是插入:
>>> LoL[0].append('A')
>>> LoL
[[['#', '#', '#', '#'], 'A'], [['#', '#', '#', '#']], [['#', '#', '#', '#']], [['#', '#', '#', '#']], [['#', '#', '#', '#']]]
然后更容易打印,因为列表是同质的:
>>> print '\n'.join(str(i)[1:-1] for i in LoL)
['#', '#', '#', '#'], 'A'
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']
您还可以对每一行使用字典:
>>> d={i:l for i,l in enumerate(LoL)} #assuming that is just a LoL
>>> d
{0: [['#', '#', '#', '#']], 1: [['#', '#', '#', '#']], 2: [['#', '#', '#', '#']], 3: [['#', '#', '#', '#']], 4: [['#', '#', '#', '#']]}
>>> d[0].append('A')
>>> d
{0: [['#', '#', '#', '#'], 'A'], 1: [['#', '#', '#', '#']], 2: [['#', '#', '#', '#']], 3: [['#', '#', '#', '#']], 4: [['#', '#', '#', '#']]}
>>> d[0]
[['#', '#', '#', '#'], 'A']
然后通过对字典的键进行排序来打印:
>>> print '\n'.join(str(d[k])[1:-1] for k,v in sorted(d.items()) )
['#', '#', '#', '#'], 'A'
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']
编辑
你可以这样打印:
>>> for row in LoL:
... for items in row:
... print items,
... print
...
['#', '#', '#', '#'] A
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']
['#', '#', '#', '#']