Python を学習し、Project Euler で遊んで、数学のスキルを再調整しています。問題 35の問題に遭遇しました。100 万未満のすべての素数を生成し、偶数を含むものを排除しました。現在、残りの約 3,000 個の素数で最後のチェックを実行しようとしています。
この関数は次のことを想定しています。
- ~3k の素数のリストを取得します。
- 元のリスト内の各アイテムのすべてのローテーションのリストで構成される新しいリストを返します。
これが私が持っているもので、各行をどのように理解しているかを示しています。
def rotations(lst):
newlist = []
for i in lst: # Take each int item in list.
s = [int(j) for j in str(i)] # Turn each item into a list of digit strings
num = ([s[k:]+s[:-len(s)+k] for k in range(len(s))]) # Generate list of rotations of strings
tmplst = []
for l in num: # For each string rotation
tmplst.append(int(''.join(map(str,l)))) # Turn it into an integer, add that int to tmplst
newlist.append(tmplst) # Add each tmplist to 'newlist'
return newlist
入力rotations([123,456])
のみで次の結果が得られます。
[[123, 231, 312]]
期待しているとき
[[123, 231, 312],[456,564,645]]
何がうまくいかないかの手がかりはありますか?