Рассчитайте каждое обновленное значение и соответствующее ему случайное значение, а затем нарисуйте их
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 как 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
1 ответ
Можете ли вы уточнить, что вы пытаетесь сделать здесь? Похоже, вы пытаетесь выбрать значение в a2 на основе где '?' содержится в a1, а затем умножить a2[индекс? в a1] по случайному числу и нанесите его на график с произведением по оси y и случайным числом по оси x. Исходя из этого предположения, есть несколько вариантов. Наиболее очевидным было бы использование метода index(), см. Этот вопрос: Python: поиск элемента в массиве. В качестве альтернативы, если '?' предполагается также случайное размещение в 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):
)