在python中减去列表的第一个和最后一个元素

时间:2012-12-04 16:51:13

标签: python list tuples

我有以下列表:

>>> 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 个答案:

答案 0 :(得分:1)

[ll[i][0][0] - ll[i-1][-1][0] for i in xrange(1,len(ll))]

答案 1 :(得分:0)

因此,您可以使用索引访问此列表列表中的值。从那时起,您现在可以通过调用

来访问第六个第一个实例
list_of_list[1][0][0]

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

list_of_list[2][1][0]

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

答案 2 :(得分: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]

答案 3 :(得分: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 < / p>