私はPythonに比較的慣れていないので、ここで何が起こっているのか理解できません。リストをループするために使用する場合、Python は 1 つおきの番号をスキップfor
しますが、特定の数の要素が入った後でのみです。これは私が取り組んでいるより大きなプロジェクトの一部ですが、このコード スニペットはそれを示しています。
コードは 7 まで正常に機能し、7 になると 1 つおきの数値をスキップし始めます。反復処理中のリストを編集しないことを知っているので、それを避けていますがfor
、それらのいくつかを呼び出していません。他の番号ではなく各番号をループさせるにはどうすればよいですか? なぜこれを行うのですか?
コード:
import math
i1 = 60
l1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59]
l3 = l1
print(l1)
for a in l1:
print(a)
if a > math.floor(math.sqrt(i1)):
print("REMOVED: " + str(a))
l3.remove(a)
print(l3)
出力:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59]
2
3
5
7
11
REMOVED: 11
17
REMOVED: 17
23
REMOVED: 23
31
REMOVED: 31
41
REMOVED: 41
47
REMOVED: 47
53
REMOVED: 53
[2, 3, 5, 7, 13, 19, 29, 37, 43, 49, 59]