0

タプルのタプルがあります:

nums = ((4, 5, 6), (5, 6, 7), (2, 3))

ここで、各数値が「ベースライン」数値から減算される同様の構造を作成したいと考えています。タプルのベースライン番号は次のとおりです。

baselines = (1, 0.5, 3)

したがって、私が望む構造は次のようになります。

# want: diffs = ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0))

私たちが持っている場所:

diffs[0] = [x - baselines[0] for x in nums[0]]
diffs[1] = [x - baselines[1] for x in nums[1]]
# etc.

Pythonでこれをエレガントに行うにはどうすればよいですか?

4

2 に答える 2

3

zipジェネレーター式で使用します。

In [66]: nums = ((4, 5, 6), (5, 6, 7), (2, 3))

In [67]: baselines = (1, 0.5, 3)

In [68]: tuple( tuple( val-y for val in x ) for x,y in zip (nums,baselines ))
Out[68]: ((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0))
于 2013-04-28T23:53:16.990 に答える
0
>>> [[x-baselines[i] for x in nums[i]] for i in range(3)]
[[3, 4, 5], [4.5, 5.5, 6.5], [-1, 0]]

あなたはそれをタプルにすることができます

>>> tuple(tuple(x-baselines[i] for x in nums[i]) for i in range(3))
((3, 4, 5), (4.5, 5.5, 6.5), (-1, 0))
于 2013-04-29T00:11:05.377 に答える