2016-10-11 12 views
-1

私が持っている:Pythonのリストのリストで値を要素に置き換える方法は?

countsminusoneが0または0未満のすべての値については、
counts = [[2, 2, 2, 0], [2, 2, 1, 0]] 
countsminusone = [[1, 1, 1, -1], [1, 1, 0, -1]] #Which is counts - 1 

、私は1

countsminusone1 = [[1 if x == 0 or x < 0 else x for x in pair] for pair in countsminusone] #I cannot get this to work 

と交換してください。そしてcountsminusoneでカウントを分割したい

Divide = [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(counts, countsminusone)] #This should work if the above works 
+2

'x == 0またはx <0' ==' x <1'は整数で... – brianpck

+3

または少なくともx <= 0 ... –

+0

あなたはそれがうまくいかないと思いますか?実際の結果と期待される結果を提供してください。 –

答えて

2

あなたはこれを非常に複雑にしていると思います。

GOAL: - 1や、Nの場合 - 1 < = 0、1

によってnでnはリストのリスト内のすべての数を割るのにあなたが実際に最も簡単な方法で何をしたいの状態をみましょう

これは、余分なリストとビュンを作成することなく行うことができます。この場合には、max(i - 1, 1)常には1

なること

counts = [[2, 2, 2, 0], [2, 2, 1, 0]] 
divided = [[i/max(i - 1, 1) for i in sublst] for sublst in counts] 

注意10

+0

正解、最高の答え –

1

最後の行でcountsminusonecountsminusone1に置き換えるのを忘れた場合を除き、機能します。

countsminusone1 = [[1 if x <= 0 else x for x in pair] for pair in countsminusone] 
Divide = [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(counts, countsminusone1)] 
関連する問題