用0

时间:2018-05-02 09:01:34

标签: python list random

Hellow。我对这个问题有些困难:

  1. 我有一个列表,例如a=[1,4,5,7,10]
  2. 我需要另一个列表,其中随机选择的元素来自 a (b = np.random.choice(a,3,replace=False) - > b = [4,7,10]
  3. b 的长度必须与len(a)相同。我想我会把某人与那个文字混淆,所以这里有例子:

     1. `a = [1,4,5,7,10]` 
     2. `b = [0,4,0,7,10]`
    

    因此,未选择的元素必须为零。

    任何建议都将不胜感激

3 个答案:

答案 0 :(得分:0)

有更好的解决方案,但这可行:

import numpy as np
a = np.array([1,4,5,7,10])
b = np.random.choice(np.arange(len(a)), 3, replace=False)
out = np.zeros(len(a), dtype=np.int)
out[b] = a[b]
print(out)

请注意,我在choice的索引列表中使用a,而不是a的实际值。

答案 1 :(得分:0)

将问题反转到"用0"替换随机列表条目。然后问题变成如何决定是否将其设置为0的任何值。在这里,我们每个值使用一定的随机机会;你想用其他任何具体标准来代替它:

import random

a = [1,4,5,7,10]
b = [0 if random.randint(0, len(a)) < 2 else i for i in a]

答案 2 :(得分:-1)

import random

a = [1, 4, 5, 7, 10]
b = random.sample(a, len(a))

for i in range(len(b)):
    if b[i] != a[i]:
        b[i] = 0

print('a:', a)
print('b:', b)