2015-11-10 2 views
-3

Я новичок в python, и я пытаюсь создать массив (без использования numpy), а затем некоторые значения будут случайно заменены. Массив создается с помощью этого кода:случайным образом меняет значения в двухмерном массиве

array = [] 

for row in range(6): 
    array.append([])  
    for column in range(6): 
     array[row].append('0') 

def display(array): 
    for row in array: 
     print(" ".join(row)) 

display(array) 

Этот код выводит:

0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 

Как я могу случайно выбрать элемент в этом списке и заменить его на 1 вместе с цифрами выше/ниже и рядом с ним, как так:

0 0 0 0 0 0 
0 0 1 0 0 0 
0 1 1 1 0 0 
0 0 1 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
+0

[Здесь] (https://docs.python.org/2/tutorial/datastructures.html) вы можете проверить, как использовать списки. [Здесь] (https://docs.python.org/3.1/library/random.html#random.randint) вы можете проверить, как получить случайное число ... и около 1 по выбранному элементу, попытаться найти связь между индексами элементов * n * и его соседними индексами. – makeMonday

ответ

0

для генерироваться случайным образом несколько раз использовать

from random import randrange 
x=randrange(0,6) 
print(x) 

это даст вам случайное число. , и что касается изменения числа вокруг этого числа, просто используйте вышеуказанное число и увеличивайте и уменьшайте это число, чтобы получить индекс числа вокруг него.

1

Вы можете написать логику, чтобы проверить крайние случаи, или вы можете использовать исключения следующим образом:

def node_and_neighbours(array, r, c, v): 
    elements = [(r - 1, c), (r, c - 1), (r,c), (r, c + 1), (r + 1, c)] 
    for (i, j) in elements: 
     try: 
      array[i][j] = v 
     except IndexError: 
      pass 

Затем вы можете случайно выбрать строку/индексов Col и установить на своих соседей и свое собственное значение, как " 1 ', вызывая указанную выше функцию.

import random 
r = random.randint(0, len(array) - 1) 
c = random.randint(0, len(array[r]) - 1) 
node_and_neighbours(array, r, c, '1') 
display(array) 
Смежные вопросы