リストで始まり、a=[1]
次にそれを変更するpythonプログラムが必要です...次に2
別の要素を追加すると、リストが次のようになり、別の要素を追加して次のようになり、 11個の要素が含まれるまで続きます5 に等しいので、3
5
1,1
1,2
5,5
1,1,1
5,5,5,5,5,5,5,5,5,5,5
質問する
130 次
4 に答える
3
from itertools import chain, product
n = range(1, 6)
for a in chain.from_iterable(product(n, repeat=i) for i in range(1, 12)):
# do whatever you want to with a
于 2012-08-06T20:20:41.553 に答える
2
for
あなたは一緒にループを使うことができますitertools.product()
:
from itertools import product
for n in range(1, 12):
for a in product(range(1, 6), repeat=n):
# Do whatever you want to do for each of the tuples
これにより、反復ごとに変更される単一のリストが作成されるのではなく、反復ごとに新しいタプルが作成されます。
于 2012-08-06T20:20:58.077 に答える
2
これは宿題の質問のように思われるので、あなたは正しい軌道に乗る答えを得るだけです。
私には、次の動作が必要なようです。
[1]
[2]
[3]
[4]
[5]
[1,1]
[1,2]
[1,3]
[1,4]
[1,5]
[2,5]
したがって、要素を前方に追加しているように見えますが、要素を後方にインクリメントしています。
モジュラー演算を調べて、リストを1に戻すために逆方向にインクリメントする方法を確認します。
それを行ったら、(x mod 4)+1の範囲を検討してください。
于 2012-08-06T20:22:32.147 に答える
0
これは、プロセスに沿った任意の状態でこのリストを受け取り、それを処理する方法を知っている関数です。申し訳ありませんが、その長い答えは、私ができる限り多くの助けを提供したかった. そして、私はコードが最も素晴らしいものではないことを知っています。
def growth(mylist):
new = False
i = 0
mylist = [r for r in reversed(mylist)]
while new is False:
if mylist[i] < 5:
mylist[i] += 1
break
elif i == len(mylist)-1:
new = True
else:
i+=1
if i >= len(mylist):
break
if new == True:
mylist = [1 for r in xrange(len(mylist)+1)]
mylist = [r for r in reversed(mylist)]
return mylist
いくつかのテスト:
#get at start:
a = [1]
print a
for i in xrange(10):
a = growth(a)
print a
結果:
>>>
[1]
[2]
[3]
[4]
[5]
[1, 1]
[1, 2]
[1, 3]
[1, 4]
[1, 5]
[2, 5]
と
print
#get in middle:
a = [1,3]
print a
for i in xrange(10):
a = growth(a)
print a
結果:
>>>
[1, 3]
[1, 4]
[1, 5]
[2, 5]
[3, 5]
[4, 5]
[5, 5]
[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 1, 4]
そして最後に:
print
#get late:
a = [1,1,3,5]
print a
for i in xrange(10):
a = growth(a)
print a
結果:
>>>
[1, 1, 3, 5]
[1, 1, 4, 5]
[1, 1, 5, 5]
[1, 2, 5, 5]
[1, 3, 5, 5]
[1, 4, 5, 5]
[1, 5, 5, 5]
[2, 5, 5, 5]
[3, 5, 5, 5]
[4, 5, 5, 5]
[5, 5, 5, 5]
于 2012-08-06T21:05:56.743 に答える