Python

Заполнить двухмерный список случайными числами python

Решил попробовать питон после с++ и сишарп. Это жесть. Прочитал много инфы, но не могу понять. Как мне заполнить двухмерный список случайными числами от -1 до 1, и вообще, как перебирать двухмерные списки, приемы из си-подобных что-то не работают
Делал так

Val = [[]]
for y in Val:
for x in Val:
Val[x][y] = 2 * np.random.random((3,1)) -1

Вылезает ошибка
TypeError: list indices must be integers or slices, not list

Замена 2 * np.ran....на random.uniform(-1,1) ничего не дает
ты в C++ когда-нибудь с range-based for loop работал?
так вот, сейчас ты пытаешься сделать то же самое
неудивительно, что у тебя ничего не получается
ты ведь всегда можешь перебирать не элементы, а их индексы, используя range(len(Val)) вместо просто Val, хотя с элементами эта задача тоже решается
и да, тут у тебя пустой массив, в нём ничего нету, так что даже при правильно написанном цикле прога тут же завершится

и зачем использовать numpy для получения случайного числа, когда есть random из стандартной библиотеки, мне тоже не совсем понятно
Игорь Денисенко
Игорь Денисенко
51 164
Лучший ответ
Николай Еременко Спасибо, а как при создании списка объявить количество элементов в каждом из измерений?
Заполнение двумерных матриц А [M][N] случайными числами из [-1;1] происходит так:

import random

M,N=input("M N > ").split(' ')
M=int(M);N=int(N)

A=[[random.uniform(-1,1) for n in range(N)] for m in range(M)]

#теперь можно распечатать весь список оператором print(A) или сделать это немного покрасивше в стиле Си:

for m in range(M):

..for n in range(N):

....print("%7.4f"%(A[m][n]),end='')

..print()

А чтобы субсписки внутри объемлющего их списка были разной длины, а не обязательно только лишь постоянной длины N, как выше, то для всех M элементов главного списка все эти разные длины его подписков тогда ведь придётся специально задавать, причём в каждом отдельном случае - особо!..
Андрей Неживых
Андрей Неживых
28 648
[[random.randint(-1,1) for _ in range(10)] for _ in range(10)]

Если нужны числа с точкой, то random.uniform(-1,1)
https://pastebin.com/raw/TBHwKzx3
создание двумерного списка и заполнение случайными числами.

для работы с двумерными списками много вариантов. либо по конкретным элементам (два цикла for(один вложен в другой)) или просто по индексам с циклом while и переменными, отвечающими за индексы или так же for'ы, но по индексам