Форум сайта python.su
0
(питон3)Короче пытаюсь разобраться почему массивы не могут нормально переводиться из одной системы счисления в другую, но пока безуспешно. Поэтому упростил задачу до минимума, чтобы не заморачиваться с этим, и работать со строками, но и тут возникают не разрешимые для меня проблемы))
Нужно одномерный массив а перезаписать в массив z, в виде двумерного массива, где каждый символ массива а записывается, как отдельный элемент. То есть, по сути, построить такой массив:
0 1 1 0
1 1 1 1
0 0 0 0
из такого 0110,1111,0000
Вот пример моего гавнокода, Проблема в предпоследней строчке:
"z[i,j]= s[j] TypeError: list indices must be integers, not tuple" a = ['0110','1111','0000'] z = [] for i in range (2): for j in range (3): s=a[i] z[i,j]= s[j] print (z[i,j])
Отредактировано omon3 (Июль 21, 2015 14:11:21)
Офлайн
221
omon3
Ок . тогда первое что вам надо освоить это то что на ВСЕХ вменяемых форумах, код вставляется в специальные теги. Освоите это - можно будит переоформить должным образом топик и помогать вам дальше.
Офлайн
0
JOHN_16Сегодня обнаружил что квадратные скобки куда-то пропали)
a = ['0110','1111','0000']
z = []
for i in range (2):
for j in range (3):
s=a[i]
z[i,j]= s[j]
print (z[i,j])
Офлайн
186
a = ['0110','1111','0000'] z = [ list(x) for x in a ]
a = ['0110','1111','0000'] z = [] for x in a: z.append(list(x))
Отредактировано Rodegast (Июль 21, 2015 10:39:53)
Офлайн
0
Мне нужно чтобы каждая цифра массива А'0110','1111','0000' (тоесть разделить 0 элемент 0110 на отдельные элементы 0,1,1,0 и.т.д.) была элементом ДВУМЕРНОГО массива Z:
0 1 1 0
1 1 1 1
0 0 0 0
Где Z[1,1] это 1, Z[0,0] это 0 и.т.д.
z[i,j]= s[j] TypeError: list indices must be integers, not tuple
a = ['0110','1111','0000'] z = [] for i in range (2): for j in range (3): s=a[i] z[i,j]= s[j] print (z[i,j])
Отредактировано omon3 (Июль 21, 2015 14:10:10)
Офлайн
186
> Мне нужно чтобы каждая цифра массива А'0110','1111','0000' …..
Во блин…. Ты бы хоть для приличия запустил то что я тебе написал, а потом бы возмущался.
> Как понять эту ошибку, ведь все индексы записаны в стиле списка,а не кортежа??
Это значит что нельзя втыкать в срез кортежи.
Офлайн
0
RodegastТы думаешь я просто так писал все это?)) Я наверно что-то не понимаю, НО при попытке вызвать элемент массива z пишет ошибку.
> Мне нужно чтобы каждая цифра массива А'0110','1111','0000' …..Во блин….
Ты бы хоть для приличия запустил то что я тебе написал, а потом бы возмущался.
a = ['0110','1111','0000'] z = [] a = ['0110','1111','0000'] z = [ list(x) for x in a ] print (z[0,1]) ---------------- print (z[0,1]) TypeError: list indices must be integers, not tuple
print (z) >>>[['0', '1', '1', '0'], ['1', '1', '1', '1'], ['0', '0', '0', '0']]
print (z[1]) >>>['1', '1', '1', '1'] print (z[1][1]) >>>0
Тоесть массив в питоне записывается в виде z[i][j], а не z[i,j]???
z[i][j] ---------------------- a = ['0110','1111','0000'] z = [] for i in range (2): s=a[i] for j in range (3): z[i][j]= s[j] print (z) ---------------------- z[i][j]= s[j] IndexError: list index out of range
RodegastРазве срез пишется как
> Как понять эту ошибку, ведь все индексы записаны в стиле списка,а не кортежа??
Это значит что нельзя втыкать в срез кортежи.
z[i,j]???
Офлайн
186
>
print (z[0,1])
print(z[0][1])
[0:1]
>>> z [['0', '1', '1', '0'], ['1', '1', '1', '1'], ['0', '0', '0', '0']] >>> z[1] ['1', '1', '1', '1'] >>> z[1][1] '1'
Отредактировано Rodegast (Июль 21, 2015 16:31:58)
Офлайн
.
Отредактировано J.R. (Фев. 27, 2016 15:53:42)
Офлайн
0
J.R.
У вас же перед циклом z - пустой, а в цикле вы просите чтобы значение, которого не существует было изменено на ваше желаемое, но так не бывает, он вам и пишет что индекс списка вне диапазона - то есть нет у него адреса даже такого. Чтоб ваше выражение в цикле со списком z получилось, в него нужно положить сначала что-то, для этого есть метод append. А уж когда z-итое-житое будет иметь хоть какое-то значение, тогда его можно менять в той манере, в которой вы пытаетесь его менять.
import numpy as np a = ['0110','1111','0000'] z = np.random.randint(0, 10, [3,4]) for i in range (3): s=a[i] for j in range (4): z[i][j]= s[j] print (z) g = z[1][1] + z[1][2] print (g) --------------------------- [[0 1 1 0] [1 1 1 1] [0 0 0 0]] 2 #g = z[1][1] + z[1][2] --------------------------- # тоже самое но без библиотеки нампи n = 3 m = 4 d= [[0] * m for i in range(n)] print (d) for i in range (3): s=a[i] for j in range (4): d[i][j]= s[j] print (d) p = d[1][1] + d[1][2] print (p) ------------------------------- [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] [['0', '1', '1', '0'], ['1', '1', '1', '1'], ['0', '0', '0', '0']] 11 #p = d[1][1] + d[1][2] -------------------------------
Офлайн