我有一系列表示坐标的 Python 元组:
tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]
我想创建以下列表:
l = []
for t in tuples:
l[ t[0] ][ t[1] ] = something
我收到一个 IndexError:列表索引超出范围。
我的背景是 PHP,我希望在 Python 中您可以创建以索引 > 0 开头的列表,即创建空白然后填充它们,但看起来您不能。
想法是在之后对列表进行排序。我知道我可以用字典来做到这一点,但据我所知,字典不能按键排序。 更新:我现在知道他们可以 - 查看已接受的解决方案。
编辑: 我想要做的是创建一个二维数组来表示用元组坐标描述的矩阵,然后按顺序迭代它。 如果我使用字典,我无法保证按顺序迭代键 -> (0,0) (0,1) (0,2) (1,0) (1,1) (1,2 ) (2,0) (2,1) (2,2)
有人能帮忙吗?
最佳答案
不,您不能创建有间隙的列表。但是你可以用元组键创建一个字典:
tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]
l = {}
for t in tuples:
l[t] = something
更新: 尝试使用 NumPy ,它提供了对矩阵和数组的广泛操作。引用网站上可用的 NumPy 上的免费 pfd(3.4.3 平面迭代器索引):“如前所述,X.flat 返回一个迭代器,该迭代器将迭代整个数组(以 C 连续样式与最后一个索引变化最快”。看起来像你需要的。
关于python - 在 python 中填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/696874/