我需要找到数组中> 0的所有元素,然后在Python 3中用0到5之间的随机数替换每个元素。
我创建了一个由20个元素组成的数组(称为L),每个元素等于0或1,但我正在努力单独替换元素。 (但是将来这可能等于一系列数字,所以我需要> 0而不仅仅是= 1)
我不想要
li
因为这会将所有元素> 0更改为相同的随机数。
有什么想法吗?
答案 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
中的单个元素。它会创建一个新列表。但是,除非列表特别大,否则这没有区别,实际上可能会稍快一些。 (这可能就是有人投票的原因。你不能让所有人满意。)