所以我有这个:
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]
因为这是倒数第二个列表,所以它会停止。
我正在尝试实现Quine-McCluskey方法来最小化逻辑表达式。
答案 0 :(得分: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]
答案 1 :(得分: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]
答案 2 :(得分: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]))
答案 3 :(得分: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)