import random
#import matplotlib.pyplot as plt
a1 = ['','','?','']
a2 = [10,25,43.34,90]
i = 0
i_array = []
while i < 10:
i_array.append(i)
i = i + 1
r = random.random()
for i, j in enumerate(a1):
if j == '?':
print(a2[i]*r)
a3 = a2[i]*r
plt.line(r,a3)
我在a1中的问号可能出现在这四个地方的任何地方。因此,需要改变a2中与其对应的值。 答案: 随机导入 #import matplotlib.pyplot as plt
a1 = ['','','?','']
a2 = [10,25,43.34,90]
xarray=[]
yarray=[]
i = 0
i_array = []#probably can delete this, I don't see any reason for it
for i in range(0,10):#use a for loop instead
i_array.append(i)
r = random.random()
a3 = a2[a1.index('?')]*r#index here instead of the for loop
print(a3)#since your assigning a3 anyway, might as well print that
xarray.append(r)#plot needs arrays
yarray.append(a3)
plt.plot(xarray,yarray)#plot your arrays
答案 0 :(得分:1)
你能详细说明你在这里想做什么吗?看来你正试图在a2的基础上选择一个值'?'包含在a1中,然后乘以a2 [指数?在a1]中用随机数表示它,产品在y轴上,随机数在x轴上。基于该假设,有几种选择。最明显的是使用index()方法,请看这个问题:Python: finding an element in an array。或者,如果'?'意味着也可以随机放置在a1中,然后随机找到a2的索引比使用这两个列表更简单。使用以下a2[random.ranint(0, len(a2)-1)]
执行此操作。 (此处的文档:https://docs.python.org/2/library/random.html)此外,我不是pyplot的专家,但看起来您对plt.line(r,a3)
的调用可能无法按照您的意愿运行。根据我的想法,您可能希望在循环的每次迭代中将r和a3附加到两个单独的列表(例如rlist,a3list),然后调用plt.plot(rlist, a3list)
。最后,你的while循环没有错,但你似乎将它用作for循环,所以你也可以这样做(for i in range(0,10):
)