私はリストを持っています:
a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]
このリストから 100 より大きいランダムな整数を 1 つ削除したいのですが、どうすればよいですか?
In [55]: a
Out[55]: [1, 3, 5, 657, 78, 43, 7, 2, 123, 43, 321]
In [56]: a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]
In [57]: a.pop(random.choice([i for i,num in enumerate(a) if num>100]))
Out[57]: 4531
In [58]: a
Out[58]: [1, 3, 5, 657, 78, 43, 7, 2, 123, 43, 321]
まず、100を超えるすべての要素のインデックスのリストを取得します。
dels = [i for i, val in enumerate(a) if val > 100]
次に、そのリストから1つを選択します。
index = random.choice(dels)
次に、元のリストからそのインデックスを削除します。
del a[index]
すべてを一緒に入れて:
>>> a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]
>>> dels = [i for i, val in enumerate(a) if val > 100]
>>> index = random.choice(dels)
>>> del a[index]
>>> a
[1, 3, 5, 657, 78, 43, 7, 2, 43, 321, 4531]
リストに 100 より大きい数字が多数ある場合は、リストの最初と最後の間で 1 つのインデックスを選択し、100 より大きい場合は削除し、そうでない場合は別のインデックスを選択します。
100 を超える項目があまりない場合は、100 を超える要素を配列に保存し、そのうちの 1 つをランダムに選択してから、元の配列から削除する必要があります。
100を超える整数のインデックスのリストを作成し、それらのインデックスの1つをランダムに選択してから、そのインデックスをリストから削除します