一般的なPythonの慣用句に従ってください。あなたはそれが間違ってやっているfor i in range(len(l)):
をやっている場合は
1)を使用すると、
2)で、内蔵のPythonをオーバーライドしている、あなたのデータlist
に名前を付けないでください。 iterable自体をループします。
3)可能であれば、同様の種類をリストに入れてください。ここで
は、私はあなたがやろうとしていると思う何をしてテストされていない例を示します
data = [[72, 36], [], [72, 25], [72, 28], [72, 38], [], [72, 28]] # replaced empty strings with empty lists, maintain type similarity
E = 3233
N = 17
for pair in data: # loop over list itself, not range(len(list))
if pair: # pair is Truthy if the element is NOT an empty list
pair[0] = pair[0]**(E%N)
pair[1] = pair[1]**(E%N)
EDIT:あなたは絶対にあなたの元データリストにスペースを維持する必要がある場合:
data = [[72, 36], ' ', [72, 25], [72, 28], [72, 38], ' ', [72, 28]]
E = 3233
N = 17
for pair in data: # loop over list itself, not range(len(list))
if pair != ' ':
pair[0] = pair[0]**(E%N)
pair[1] = pair[1]**(E%N)
"どうしたの?あなたのコードは反パターンがかなり悪いです。そして問題はおそらく、元のリスト要素を変更するのではなく、 'J'という名前を再バインドしていることでしょう。 –
コロンを修正しました。ありがとうございます。反パターンの意味は?申し訳ありません、Pythonには比較的新しい、専門用語に慣れていません。あなたは私が個々に要素を変えなければならないと言っていますか? –
1.変数 'list'を呼び出さないでください。これは組み込み型' list'をシャドウするためです。 2.インデックスをループする代わりに、リスト自体をループする必要があります: 'for J in lst:...'。 3. 'J = J ** E%N'を実行すると、(a)あなたはリストでこれをやっています。あなたは何をしたいのではなく、(b)元のリストを変更するのではなく、 'J'という名前を作り直しています。変更可能なコンテナの種類と再バインドの内容を確認します。私の提案:https://nedbatchelder.com/text/names.html 4. [ask]と[mcve]を読んでください。5.あなたのセパレータは空文字列になっています。 –