3

我有以下列表:

>>> list_of_lists = [[(0, 0)], [(6, 0)], [(7, 0), (8, 0), (9, 0)], [(10, 0)]]

我想要的是以下内容:

>>> substract(list_of_lists)
[6, 1, 1]

基本上我有一个列表列表。这些列表中的每一个都是元组列表。我想从后续列表中第一个元组的第一个元素中减去列表中最后一个元组的第一个元素。为了更象形的解释,

[[( 0 , 0)], [( 6 , 0)], [( 7 , 0), (8, 0), ( 9 , 0)], [( 10 , 0)]]

6 - 0 = 6

7 - 6 = 1

10 - 9 = 1

4

4 回答 4

2
[ll[i][0][0] - ll[i-1][-1][0] for i in xrange(1,len(ll))]
于 2012-12-04T17:11:45.683 回答
0

因此,您可以使用索引访问此列表列表中的值。从那时起,您现在可以通过调用来访问数字 6 的第一个实例,

list_of_list[1][0][0]

其中第一个索引指的是列表中的列表,第二个指的是列表中的元组,最后一个索引指的是元组中的元素。另一个例子可能是访问 8,

list_of_list[2][1][0]

从那里您应该能够自己创建一个循环,循环遍历列表并输出所需的数组。

于 2012-12-04T17:08:12.763 回答
0

怎么样:

In [9]: ll = [[(0, 0)], [(6, 0)], [(7, 0), (8, 0), (9, 0)], [(10, 0)]]

In [10]: first = [l[0][0] for l in ll]

In [11]: last = [l[-1][0] for l in ll]

In [12]: [f - l for (f, l) in zip(first[1:], last[:-1])]
Out[12]: [6, 1, 1]
于 2012-12-04T17:09:27.857 回答
0
li = [[(0, 0)],
      [(6, 0)],
      [(7, 0), (8, 0), (9, 0)],
      [(10, 0)]]
for x in li:
    print x
print

def iti(li):
    a = li[0]
    for b in li[1:]:
        yield b[0][0]-a[-1][0]
        a = b

print list(iti(li))

在此解决方案中,列表仅迭代一次(使用 b),也就是说每个元素仅分配一次

编辑:不,实际上每个元素(即列表中的对象)第一次分配给b,然后再分配给a

于 2012-12-04T17:49:35.077 回答