スクリプト言語のpythonを学んでいます。私はJavaをかなり知っています。Java から Python に 1 ビットのコードを翻訳しようとしています。しかし、それらは不規則に動作します (または、私の理解が完全に間違っている可能性があります)。Java に次のコードがあり、要素を ArrayList に無期限に追加しています。したがって、これによりメモリ不足エラーが発生します。これは私が期待するものです:
import java.util.*;
public class Testing{
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(4);
for (int i=0;i<list.size();i++){
list.add(5);
}
}
}
Pythonで翻訳された同じコード:
lst = []
lst.append(5)
lst.append(4)
for i in range(len(lst)):
lst.append(5)
print lst
ここで私は出力を取得します:[5, 4, 5, 5]
for
私が見たところ、リストはPythonのループへの参照として渡されていませんか?
ここでも同様に、
>>> l=[1,2,3]
>>> for i in l[:]:
... l.append(4)
... print l
...
[1, 2, 3, 4]
[1, 2, 3, 4, 4]
[1, 2, 3, 4, 4, 4]
ループ内の各反復でfor
、リストのサイズを増やしているので、反復は永遠に正しいはずですか?