Уведомления

Группа в Telegram: @pythonsu

#1 Март 22, 2012 19:45:39

kate
От:
Зарегистрирован: 2012-03-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Из одномерного массива сделать двумерный

Piton23
Раз уж тайна задачи остается за 7 замками то объясним хотяб ей что за ошибка )
Q - последовательность, итерируемый объект
число (такое как 5, 18 или 69) - не итерируемый объект

Так вот функция len над итерируемым объектом возвращает количество, если список то количество элементов, если строка то количество символов.

Вы же когда запрашиваете len(S) спрашиваете чему равна длина первого элемента списка, т.е. len(1) на что и получаете ошибку. А ведь действительно нельзя ж подсчитать длину числа.

В итоге вы либо говорите конкретную задачу которую вам нужно решить и получаете решение за пол часа, т.е. приводите пример двухмерного массива. Либо если вам нужен репетитор чтобы спрашивать а что в этой строчке не так, а что в этой, я думаю желающих по уменьшится :)
Спасибо всем огромное, то что я хотела получилось сделать:) Да тайны никакой нет, у нас с этого семестра начался курс по распознаванию изображений, вот делаю лабораторную работу(нужно сделать интегральное представление изображения), для программирования выбрала язык python, вот сижу потихоньку читаю книги и разбираюсь :) наверное с моей стороны совсем нагло будет попросить помочь еще перевести данный код:
public static int SumOfRectangle(int[,] integralImage, Rectangle rect)
{
int A = 0, B = 0, C = 0, D = 0;
if (rect.Top > 0 || rect.Left > 0)
if (rect.Top <= 0)
D = integralImage[rect.Left - 1, rect.Bottom];
else
if (rect.Left <= 0)
B = integralImage[rect.Right, rect.Top - 1];
else
{
A = integralImage[rect.Left - 1, rect.Top - 1];
B = integralImage[rect.Right, rect.Top - 1];
D = integralImage[rect.Left - 1, rect.Bottom];
}

C = integralImage[rect.Right, rect.Bottom];
return A + C - B - D;
}
Тут есть 2 метода - integralImage и Rectangle rect, их я реализовала у меня они intimage и rectangle соответственно. Вот попыталась сейчас перевести данный код, но как всегда мои попытки тщетны:)
from rectangle import rectangle
from intimage import image

def SumOfRectangle(image, rect):
A = 0
B = 0
C = 0
D = 0
if rectangle([rect1]) > 0 || rectangle([rect2]) > 0:
if rectangle([rect1]) <=0:
D = intimage(rectangle([rect2]-1), [rect3]))
else:
if rectangle([rect2]) <=0:
B = intimage(rectangle([rect4]), [rect1] - 1)
else:
A = intimage(rectangle([rect2] - 1, [rect1] - 1)
B = intimage(rectangle([rect4], [rect1] - 1)
D = intimage(rectangle([rect2] - 1, [rect3])
C = intimage(rectangle([rect4]), [rect3])
return A + C - B - D



Офлайн

#2 Март 23, 2012 02:29:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Из одномерного массива сделать двумерный

kate
Тут есть 2 метода - integralImage и Rectangle rect, их я реализовала у меня они intimage и rectangle соответственно. Вот попыталась сейчас перевести данный код, но как всегда мои попытки тщетны:)
from rectangle import rectangle
from intimage import image

def SumOfRectangle(image, rect):
A = 0
B = 0
C = 0
D = 0
if rectangle([rect1]) > 0 || rectangle([rect2]) > 0:
if rectangle([rect1]) <=0:
D = intimage(rectangle([rect2]-1), [rect3]))
else:
if rectangle([rect2]) <=0:
B = intimage(rectangle([rect4]), [rect1] - 1)
else:
A = intimage(rectangle([rect2] - 1, [rect1] - 1)
B = intimage(rectangle([rect4], [rect1] - 1)
D = intimage(rectangle([rect2] - 1, [rect3])
C = intimage(rectangle([rect4]), [rect3])
return A + C - B - D
Какая феерическая чушь, Господи!
Может для начала, всё таки стоит почитать учебник то?
Щито это вообще такое
rectangle([rect1])
[rect2] - 1
У Вас нездоровая любовь ко всему квадратному, к скобкам, например, или вы таким странным образом пытаетесь получить член списка по индексу?



Офлайн

#3 Март 23, 2012 08:03:16

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Из одномерного массива сделать двумерный

Этот код переносится просто:

def SumOfRectangle( integralImage, rect ):
A = B = C = D = 0
if rect.Top > 0 or rect.Left > 0:
if rect.Top <= 0:
D = integralImage[rect.Left - 1, rect.Bottom]
elif rect.Left <= 0:
B = integralImage[rect.Right, rect.Top - 1]
else:
A = integralImage[rect.Left - 1, rect.Top - 1]
B = integralImage[rect.Right, rect.Top - 1]
D = integralImage[rect.Left - 1, rect.Bottom]

C = integralImage[rect.Right, rect.Bottom]
return A + C - B - D
При вызове, нужно передавать двухмерный массив и объект rect, у которого есть атрибуты Left, Right, Top, Bottom.



Офлайн

#4 Март 23, 2012 12:26:34

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Из одномерного массива сделать двумерный

А тема топика: Из одномерного массива сделать двумерный… количество вариантов просто потрясает :(



Офлайн

#5 Март 23, 2012 14:46:28

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Из одномерного массива сделать двумерный

pyuser
количество вариантов просто потрясает
Каков вопрос таков и ответ. Вот еще вариант
a=[1]# одномерный список
b=[a]# двумерный



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version