-1

サイズ n の N 個のリストがあるとします。たとえば、サイズ 3 のタプルが 5 つあるとします。

p = [[9, 9, 9], [17, 14, 18], [14, 15, 17], [14, 15, 17], [14, 15, 15]]

インデックス 0 など、リストのインデックス間の違いを見つけるにはどうすればよいですか。

17-9 = 8
14-17 = -3
14-14 = 0
14-14 = 0

次に、インデックス 1 の場合:

14-9 = 5
15-14 = 1
15-15 = 0
15-15 = 0

次にインデックス 2、3、4。

N と n を自由に変更できるように、これを動的に実行できるコードが必要です。

どんな助けでも大歓迎です。

編集:

これまでにこれを試しました:

for i in range(10):
    for j, k in product(range(i+1), repeat=2):
        if j!=k:continue
        else:
            print p[i][j]-p[i-1][j]

このコードは、サイズ 2 のタプル用です。

4

5 に答える 5

2

これを試して:

>>> for x in zip(*p):
    for i in range(len(x)-1):
        print '{0} - {1} = {2}'.format(x[i+1],x[i],x[i+1]-x[i])


17 - 9 = 8
14 - 17 = -3
14 - 14 = 0
14 - 14 = 0
14 - 9 = 5
15 - 14 = 1
15 - 15 = 0
15 - 15 = 0
18 - 9 = 9
17 - 18 = -1
17 - 17 = 0
15 - 17 = -2
于 2013-03-20T15:22:38.533 に答える
1

これはそれを行う必要があります:

for xyz in zip(*p):
   for curr_idx in xrange(len(xyz)-1):
     print xyz[curr_idx+1]-xyz[curr_idx]
于 2013-03-20T15:16:28.857 に答える
1

地獄のように醜く、pythonic ではなく、この世界のすべてのエラーを起こしがちですが、それでも機能します (少なくとも、必要なものの基本的なロジックを表示する必要があります):

In [6]: for i in range(len(p[0])):
            for j in range(1,len(p)):
               print "%d - %d = %d" % (p[j][i], p[j-1][i], p[j][i]-p[j-1][i])
   ...:         
17 - 9 = 8
14 - 17 = -3
14 - 14 = 0
14 - 14 = 0
14 - 9 = 5
15 - 14 = 1
15 - 15 = 0
15 - 15 = 0
18 - 9 = 9
17 - 18 = -1
17 - 17 = 0
15 - 17 = -2

説明

  • 行 1: 最大リストの最初の要素に基づいて、サブリストの長さをチェックします。

  • 行 2: インデックス 1 から開始して同じことを行います (したがって、範囲外の問題を心配することなく p[1]-p[0] を実行できます)

  • 行 3: 必要なものを印刷します

あなたはこれからいじり回すために始めることができます

于 2013-03-20T15:14:54.363 に答える
1

numpyを使用して簡単に実行できます。

p = numpy.array([[9, 9, 9], [17, 14, 18], [14, 15, 17], [14, 15, 17], [14, 15, 15]])
numpy.diff(p.T)
于 2013-03-20T15:17:51.120 に答える
1

これを試して

p = ((9, 9, 9), (17, 14, 18), (14, 15, 17), (14, 15, 17), (14, 15, 15))
index=0
for d in range(1,len(p)):
    print "p["+str(d)+"]["+str(index)+"]-p["+str(d)+"]["+str(index)+"]=",
    print p[d][index]-p[d-1][index]

出力は

p[1][0]-p[1][0]= 8
p[2][0]-p[2][0]= -3
p[3][0]-p[3][0]= 0
p[4][0]-p[4][0]= 0
于 2013-03-20T15:21:29.890 に答える