0
以下の2つの機能を1つの非常に短いものに組み合わせたいと思います。ユニークなリスト生成での再帰的ロジックの短縮
random_strs
が指定されているものletters
容器から引き上げ、n
一意の文字列のリスト、長length
のそれぞれを生成します。 nonunique_random_strs
は、内部で呼び出されたヘルパーです。論理は、ユニークな要素の数をn
に対してチェックし、次に要素を追加し、2つが等しくなるまでこのプロセスを繰り返すことです。
import numpy as np
def nonunique_random_strs(length, n, letters):
strs = np.random.choice(letters, size=(n, length)).tolist()
strs = [''.join(inner) for inner in strs]
return strs
def random_strs(length, n, letters):
strs = list(set(nonunique_random_strs(length, n, letters)))
to_add = n - len(strs)
while to_add > 0:
added = nonunique_random_strs(length=length, n=to_add, letters=letters)
strs.extend(added)
strs = list(set(strs))
to_add = n - len(strs)
return strs
print(random_strs(length=2, n=5, letters=list('abcde')))
# ['cb', 'ce', 'dc', 'db', 'ba']
だから、機能的だが、私は自分自身の中にrandom_strs
を参照したいのですが、トラブルのことをビルドが生じています。
機能がネストされている可能性がありますか? –
あなたの目標はここでは「再帰について学んでください」ですか?もしそうでなければ、上記を 'print(random.sample(list)itertools.combinations( 'abcde'、2))、5))'に置き換えることで同じ結果を得ることができると思います。 – larsks
@BradSolomon文字列のリスト 'random.sample([a + b、itertools.combinations( 'abcde'、2)内のa、b]、5)' – salparadise