当前位置:  开发笔记 > 编程语言 > 正文

在python中填充列表

如何解决《在python中填充列表》经验,为你挑选了2个好方法。

我有一系列表示坐标的Python元组:

tuples = [(1,1), (0,1), (1,0), (0,0), (2,1)]

我想创建以下列表:

l = []
for t in tuples:
  l[ t[0] ][ t[1] ] = something

我得到一个IndexError:list index超出范围.

我的背景是在PHP中,我希望在Python中你可以创建以index> 0开头的列表,即创建间隙然后填充它们,但似乎你不能.

我们的想法是让列表在之后排序.我知道我可以用字典做到这一点,但据我所知,字典不能按键排序. 更新:我现在知道他们可以 - 看到公认的解决方案.

编辑:我想要做的是创建一个2D数组,代表用元组坐标描述的矩阵,然后按顺序迭代它.如果我使用字典,我不能保证迭代按键顺序 - >(0,0)(0,1)(0,2)(1,0)(1,1)(1,2) )(2,0)(2,1)(2,2)

有人可以帮忙吗?



1> Rorick..:

不,你不能创建有差距的列表.但您可以使用元组键创建字典:

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 Flat Iterator索引):"如前所述,X.flat返回一个迭代器,它将迭代整个数组(以C连续样式,最后一个索引变化最快) ".看起来像你需要的.



2> 小智..:

你应该看看类似的东西.

for t in tuples:
  if not l.has_key(t[0]):
    l[t[0]] = {}
  l[t[0]][t[1]] = something

但是,迭代dict与迭代列表有点不同.你将拥有keys(),values()和items()函数来帮助解决这个问题.

编辑:尝试这样的东西订购:

for x in sorted(l.keys()):
   for y in sorted(l[x].keys()):
       print l[x][y]

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有