質問: ### 前提・実現したいこと pythonでリストから重複無しでランダムに取り出して、その後に残りの要素を重複無しで取り出したいです。 【追記】 わかりにくくてすみません! 例えばリスト(元のリスト)に10個要素があるとして、まず別のリスト(リストA)に重複なく3つランダムに取り出して、残りの取り出されなかった7つをランダムな順序で別のリスト(リストB)に入れたいです! ### 試したこと rnd.sample()で重複無しで取り出しはできますが、残りの要素を取り出す方法がわかりません。 ### 補足情報(FW/ツールのバージョンなど) python3
回答: setを使って集合の演算で処理するという方法もあります。 ``` data=[1,2,3,4,5] a=np.random.choice(data) #ランダムに取り出す b=set(data)-set(a) #集合dataから集合aを除いた集合を計算 ``` なお、data=[1,1,1,2,3,4]のように重複した要素が含まれる場合、ランダムに取り出した1が何番目かわからないとうまくいかないので、インデックスを振って、このインデックスを処理する必要があります。 ``` idx=np.arange(len(data)) a_idx=np.random.choice(idx) b_idx=set(idx)-set(a_idx) #以下、インデックスからデータは復元するコードについては省略 ```