2

だから私はこれを持っています:

a = [[4, 8], [5, 6, 9, 10], [13]]

次の差(減算)を取得したい:

4 - 5 = a[0][0] - a[1][0]

4 - 6 = a[0][0] - a[1][1]

4 - 9 = a[0][0] - a[1][2]

4 - 10 = a[0][0] - a[1][3]

そして8に進みます:

8 - 5 = a[0][1] - a[1][0]

8 - 6 = a[0][1] - a[1][1]

...

など、すべてのサブリストについて

何か案は?

編集:他の比較は次のようになります。

5 - 13 = a[1][0] - a[2][0]

6 - 13 = a[1][1] - a[2][0]

9 - 13 = a[1][2] - a[2][0]

10 - 13 = a[1][3] - a[2][0]

そして、これは最後から 2 番目のリストであるため、停止します。

論理式を最小限に抑えるためにQuine-McCluskeyメソッドを実装しようとしています。

4

4 に答える 4

1

このような何かがあなたが望むことをします、

しかし、質問が曖昧なので、さらにどのような反復が必要かわかりません。13で何をしますか?

>>> from itertools import product
>>> [i[0] - i[1] for i in product([4, 8], [5, 6, 9, 10])]
[-1, -2, -5, -6, 3, 2, -1, -2]
于 2012-11-05T18:50:34.547 に答える
1
    python 3.2
    a=[[4, 8], [5, 6, 9, 10], [13]] 
    [[x-y for x in a[i]for y in a[i+1]]for i in range(len(a)-1)]

    >>>[[-1, -2, -5, -6, 3, 2, -1, -2], [-8, -7, -4, -3]]

   another way:
    for i in range(len(a)-1):
          for v in a[i]:
              y.append(list(v-h for h in a[i+1]))
于 2012-11-06T18:43:13.617 に答える
1

a[0][1] - a[1][x]終了後、を続行しa[0][0] - a[2][0]、最終的には次のことも行うと仮定しますa[1][0] - a[2][0]

result = []
for i, sub_x in enumerate(a[:-1]):
    for sub_y in a[i+1:]:
        for x in sub_x:
            result.append([x - y for y in sub_y])

>>> result
[[-1, -2, -5, -6], [3, 2, -1, -2], [-9], [-5], [-8], [-7], [-4], [-3]]

リスト内包表記として:

[[x - y for y in sub_y]
     for i, sub_x in enumerate(a[:-1]) for sub_y in a[i+1:] for x in sub_x]
于 2012-11-05T18:57:49.300 に答える
0

これが探しているものである場合、このコードは、テーブル内の各要素について、次の行の各要素との差を示します。

output = []
for row_num in range(len(a)-1):
  row_output = []
  output.append(row_output)
  for elt_row in a[row_num]:
    elt_output = []
    row_output.append(elt_output)
    for elt_next_row in a[row_num + 1]:
      elt_output.append(elt_row - elt_next_row)
于 2012-11-05T18:58:41.500 に答える