使用追加

时间:2016-10-05 22:02:15

标签: python list append

Python:我想阅读数据集

(category, value): (0, 1) (0, 2) (1, 3) (1, 4)

到数组

[[1, 2],[3, 4]]

由于类别的最大数目未知,我想使用“append”方法动态创建2D数组。

我写了一个示例代码:

data = []
data.append([])

data[0].append(1)
data[0].append(2)

try:
  print (data[1])
except IndexError:
  data.append([])
finally:
  data[1].append(3)
  data[1].append(4)

print(data)

但是,我知道代码非常难看,因为我使用“print”来检查对data[1]的访问权限。

这个问题还有更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您可以使用list comprehensioniter一起轻松完成此操作。

>>> l = [(0, 1), (0, 2), (1, 3), (1, 4)]
>>> i = iter(l)
>>> [[x[1],y[1]] for x,y in zip(i,i)]
[[1, 2], [3, 4]]

这里的算法是迭代遍历元组列表。这是iter使用的地方。 iter创建一个由zip函数使用的迭代器。然后我们将元组读入列表理解并仅添加所需的两个数字,这是第二个索引。

有关这些内容的详细信息,请参阅What does "list comprehension" mean? How does it work and how can I use it?

答案 1 :(得分:1)

使用itertools.groupby

import itertools

a = [(0, 1), (0, 2), (1, 3), (1, 4)]
g = itertools.groupby(a, key=lambda x: x[0])
g = [list(i[1]) for i in g]