2017-09-11 6 views
3
x_list = ['a', 'b', 'c', 'd', 'e'] 
t_list = ['z', 'y', 'u'] 

t_listの要素をx_listの要素で「ランダムに」置き換える必要があります。私は研究したが何かを試したが、replace()はリストのために働かなかった。例えば; x_new0 = ['a', 'z', 'c', 'y', 'u],x_new1 = ['z', 'y', 'c', 'd','u']。これどうやってするの?ランダムにリストの要素を別のリスト要素に置き換えるにはどうすればいいですか?

+0

あなたは '、例えば、直接x_listを要素を割り当てることができます[2] = t_list [0] ' – nos

+0

a)' t_list'のすべての要素が新しいリストに含まれていること、そしてb)それらの要素が整っていることは重要ですか? –

+0

あなたはあなたの試行を見せていただけますか?何を試しましたか?何がうまくいかなかったのですか?問題の[mcve]を提供できますか? –

答えて

1

元のリストに置き換えたい要素をランダムに選択するには、numpy.random.choiceを使用します。次に、置換に使用する値に対するインデックスをzipに置き換え、置換を適用します。

from numpy.random import choice 

def swap_elements(x, t): 
    new_x = x[:] 
    for idx, value in zip(choice(range(len(x)), size=len(t), replace=False), t_list): 
     new_x[idx] = value 
    return new_x 

使用例

>>> x_list = ['a', 'b', 'c', 'd', 'e'] 
>>> t_list = ['z', 'y', 'u'] 
>>> swap_elements(x_list, t_list) 
['y', 'u', 'z', 'd', 'e'] 
>>> swap_elements(x_list, t_list) 
['y', 'b', 'z', 'u', 'e'] 
>>> swap_elements(x_list, t_list) 
['y', 'b', 'z', 'u', 'e'] 
>>> swap_elements(x_list, t_list) 
['a', 'u', 'z', 'y', 'e'] 
2

あなたが値を交換するかどうかを決定するためにトスrandomモジュールを使用して、頭と尾硬貨として1と100との間の乱数を生成するrandom.randint()方法を使用することができかではないし、リストのランダムな要素を返すために、第二のリストにrandom.choice()メソッドを使用

import random 

first = ['a', 'b', 'c', 'd', 'e'] 
second = ['z', 'y', 'u'] 

print(first) 

for index, x in enumerate(first): 
    if random.randint(0, 1): 
     first[index] = random.choice(second) 

print(first) 

First run stdout: 
>> ['a', 'b', 'c', 'd', 'e'] 
>> ['y', 'z', 'u', 'y', 'y'] 

Second run stdout: 
>> ['a', 'b', 'c', 'd', 'e'] 
>> ['a', 'u', 'c', 'u', 'y'] 
+1

その最初のリストのすべての要素を置き換えます。@ AK47 – Sanket

+0

「頭と尾」のtossが毎回trueを返す場合は、すべての要素を置換するだけです – AK47

+0

これは重複置換を許可します – CoryKramer

0

することができます1つのリストのランダムなインデックスと、もう1つのリストのランダムなインデックスを選択し、1つのインデックスでその値を取り、それを他のインデックスのインデックスに置きます。たとえば:また

from random import randint 

a = [1 ,2, 3, 4] 
b = [5, 6, 7, 8] 

RandomIndexA = randint(0, len(a) - 1) 
RandomIndexB = randint(0, len(b) - 1) 

a[RandomIndexA] = b[RandomIndexB] 

、あなただけの1つのランダム指数を計算でき、その後、無作為例えばrandom.choice(b)を使用して他のリストから要素を選択します。

from random import randint, choice 

a = [1 ,2, 3, 4] 
b = [5, 6, 7, 8] 

RandomIndex = randint(0, len(a) - 1) 

a[RandomIndex] = choice(b) 
関連する問題