为每个符合特定条件的数组元素分配随机数

时间:2018-02-12 17:06:20

标签: python arrays python-3.x numpy random

我需要找到数组中> 0的所有元素,然后在Python 3中用0到5之间的随机数替换每个元素。

我创建了一个由20个元素组成的数组(称为L),每个元素等于0或1,但我正在努力单独替换元素。 (但是将来这可能等于一系列数字,所以我需要> 0而不仅仅是= 1)

我不想要

li

因为这会将所有元素> 0更改为相同的随机数。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

也许这会对你有所帮助。

from random import *
L = [0,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0]

i=0
for n in L:
    x = randint(1, 5)    # Pick a random number between 1 and 5.
    if n > 0:
        L[i] = x
    i+=1
print(L)

答案 1 :(得分:0)

也许这个?

我使用特殊模式实例化L,因此应该很容易辨别代码是否符合预期。

>>> import random
>>> L = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
>>> list(map(lambda x: random.randint(0,5) if x>0 else x, L))
[0, 0, 0, 0, 0, 3, 2, 2, 4, 5]

我应该提一下,这段代码替换L中的单个元素。它会创建一个新列表。但是,除非列表特别大,否则这没有区别,实际上可能会稍快一些。 (这可能就是有人投票的原因。你不能让所有人满意。)