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
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))

このソリューションでは、リストは1回だけ繰り返されます(bを使用)。つまり、各要素には1回だけ割り当てられます。

編集:いいえ、実際には、各要素(つまり、リスト内のオブジェクト)は最初にbに割り当てられ、次に別の時間がaに割り当てられます。

于 2012-12-04T17:49:35.077 に答える
0

したがって、インデックスを使用して、このリストのリストの値にアクセスできます。その時点から、次のように呼び出して、たとえば 6 番の最初のインスタンスにアクセスできます。

list_of_list[1][0][0]

ここで、最初のインデックスはリスト内のリストを参照し、2 番目はリスト内のタプルを参照し、最後のインデックスはタプル内の要素を参照します。もう 1 つの例は、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 に答える