2017-11-05 6 views
1

リストの一部のみを別のリストにコピーする方法を教えてください。たとえば、リストの長さが105の場合、ランダムに選択された要素のうち30個だけが新しいリストにコピーされる必要があります。あなたは、あなたがすでにtrainingSet1を取り込まない限りリストの一部をコピーする

trainingSet1[x] = ... 

: これは私が

for x in range (104): 
      if len(trainingSet1)>30: 
        break 
      trainingSet1[x]= (trainingSet[random.randint(1,103)]) 

書かれているコードがある。しかし、それは、このエラー与え続け:おそらくここ

Traceback (most recent call last): 
    File "Q1_2.py", line 82, in <module> 
    main() 
    File "Q1_2.py", line 72, in main 
    trainingSet1[x]= (trainingSet[random.randint(1,103)]) 
IndexError: list index out of range 
+1

変数の名前から判断すると、 'sklearn'の' train_test_split'関数を見ることをお勧めします。また、このようなランダムなインデックスにアクセスする場合、一意性を保証することはできません。 –

+0

完全な 'Traceback' – ksai

+1

を投稿すると、リストの追加機能が使用されます。 trainingSet1.append(trainingSet [random.randint(0,104)] [ - 1]) – rdRahul

答えて

1

バグをされますまだ存在しない要素を に割り当てようとしています。代わりにtrainingSet1.append(...) を使用してください。

+0

それは働いた。本当にありがとう :) –

1

trainingSet1 =[]としてtrainingSet1を初期化し、trainingSet1[x] = valueの代わりに値を追加してみます。コードで行ったように本当に割り当てたい場合は、最初に配列をtrainingSet1 = [0] * 30として初期化することができます。これによりリストに30 0が割り当てられ、後で無作為に選択された値に置き換えられます。

関連する問題