-2

リストに含まれる 1 つまたは複数のリストの要素を削減できるコードが必要です。これはソートされたリストです。特定のパラメータがゼロより大きくなるまで、削減を継続する必要があります。2 つのシナリオが考えられますが、両方に当てはまる解決策がわかりません。問題について論理的に正しい説明を作成するのに苦労しています。必要に応じて詳細を提供しようとします。ありがとう!

#Scenario 1
parameter = 5
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]]
#reduction code
data = [[1.99,0],[1.98,0],[1.97,0],[1.96,5]]

#Scenario 2
parameter = 0.5
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]]
#reduction code
data = [[1.99,0.5],[1.98,1],[1.97,2],[1.96,6]]

プログラムの流れは次のとおりです... 最初のリストの 2 番目の要素を 1 減らして、パラメータが 5 - 1 になり、続けて、2 番目のリストの 2 番目の要素を取り、1 減らして、パラメータが 3 になり、パラメータが 0 になるまで続けます (最初のシナリオ)

4

3 に答える 3

1

Scenario-1Scenario-2どちらも別のケースです。そのための式を構築するための一般的なロジックが見つかりません。

于 2012-10-27T06:28:12.463 に答える
1

2 番目のシナリオで [1.99, 0.5] のペアが表示される理由がわかりません....

data_reduced = []
for pair in data:
    if pair[1] < parameter:
        pair[1] = 0
    else :
        pair[1] = parameter
    data_reduced.append(pair)
于 2012-10-27T05:12:32.950 に答える
0

最初のシナリオの場合:

parameter = 3
data = [[1.99,1],[1.98,1],[1.97,2],[1.96,6]]

# copy of data list
data_reduced = data[:]

for n,l in enumerate(data_reduced):
    if  parameter <= 0:
        break
    else:
        l[1] = l[1] - 1
        parameter -= 1

print data_reduced

データ リストには 4 つの要素しかなく、例のようにリストがパラメーター カウンターよりも短い場合にどうなるかを説明していませんでした (パラメーター = 5、しかしリスト内の要素は 4 つだけ)。そのため、パラメーターを 3 に減らしました。

2 番目のシナリオは、最初のリストの 2 番目の要素のみが (1 ではなく) 削減されるため、まったく異なります。

于 2012-10-27T06:47:32.317 に答える