0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12

модуль array

14.07.2015, 15:04. Показов 3509. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я писал простенькую программку, где приходится часто обращаться к различным индексам списка. Подумал что если использовать массивы, то из-за жесткого расположения в памяти время работы программы должно уменьшится. Какого же было мое удивление когда время работы увеличилось с 0.015 до 0.022. Вот собственно и вопрос, с чем это связано? Просто интересно разобраться.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import time, array
   
a=[1]*10000
b = [0]*(len(a)+1)
#b = array.array('b',b)
t1=time.clock()
 
b[0]=a[0]
for i in range(1,len(a)-1):
    b[i]+=a[i-1]+a[i]
    if(b[i])==2:
        b[i+1]+=1
        b[i+2]+=1
        b[i]=0
    elif(b[i])==3:
        b[i+1]+=1
        b[i+2]+=1
        b[i]=1
    elif(b[i])==4:
        b[i+2]+=1
        b[i]=0
        
b[i+1]+=a[i]+a[i+1]   
if(b[-2])==2:
    b[i+1]+=1
    b[i]=0
elif(b[-2])==3:
    b[i+1]+=1
    b[i]=1
elif(b[-2])==4:
    b[i]=0
b[-1]=(b[-1]+a[-1])%2
  
print(time.clock()-t1)   
print(b)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2015, 15:04
Ответы с готовыми решениями:

ValueError: Expected 2D array, got 1D array instead
Полдня сижу и не могу понять в чем дело, пытаюсь сделать логистическую регрессию. from sklearn.linear_model import...

Как этот код переделать с использованием модуля array? Или какой модуль ему подойдёт больше?
input_str = str(input()) print(input_str.index(‘ ‘) + 1) Можно его как-то переделать с использованием библиотек?

ValueError: Expected 2D array, got 1D array instead
Добрый день, уважаемые форумчане. При обучении модели для классификации изображений столкнулся с ошибкой ValueError: Expected 2D...

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2015, 17:07
Это связано с быдлкодом, код ужасен.

А вообще в python списки очень сильно оптимизированы и доступ к элементу происходит очень быстро. https://wiki.python.org/moin/TimeComplexity

Кстати, на будующие тебе. Для измерения времени работы не используют модуль time. Для этого есть специальные профайлеры. Например если нужно замерить время работы функции используют timeit.
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
14.07.2015, 17:13  [ТС]
Согласен, что код немного индусский и к тому же то что я выложил не совсем верно выполняло задание, и все это можно внутри одного цикла сделать и вообще уменьшить код в 3-4 раза, но при чем тут скорость обращения к индексам? оно пока в процессе написания, да и я только учусь. жду тогда конструктивной критики что не так с кодом?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2015, 17:47
Цитата Сообщение от geosins Посмотреть сообщение
Согласен, что код немного индусский
Так вот проблема как раз в том, что не немного....
Цитата Сообщение от geosins Посмотреть сообщение
жду тогда конструктивной критики что не так с кодом?
Если бы было, что конкретно сказать сразу бы написал, а тут надо переписывать с 0 все.

Что за задание кстати?

Добавлено через 7 минут
Кстати ещё, в случае если нужно использовать настоящие массивы и есть много данных, которые нужно обработать, то используют не этот модуль, а numpy.
0
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 12
14.07.2015, 17:50  [ТС]
это только часть задания. вообще тут идет работа с системой счисления с отрицательным основанием. конкретно на этом участке идет вычисление противоположного введенному числа. так было расписано чтобы не было лишних действий и для отделения участков кода. потом когда будут выбраны лучшие варианты возможно будет переписано.
спасибо за статью. интересно было. действительно сильно оптимизировали, но все равно неясно почему у массива показатели были хуже.
Python
1
2
3
4
5
6
7
8
9
10
a=[i for i in map(int,input("Введите массив: "))]+[0]
b,b[0],i=[0]*(len(a)+3),a[0],0
for i in range(1,len(a)): 
    b[i]+=a[i-1]+a[i]
    if(b[i]>=2): 
        b[i]%=2
        b[i+2]+=1
        if(b[i]<=3): 
            b[i+1]+=1
print(b[:-3])
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.07.2015, 18:05
Цитата Сообщение от geosins Посмотреть сообщение
но все равно неясно почему у массива показатели были хуже.
Там много чего может быть. С ходу например бросается в глаза, что там динамические массивы. Если разбираться глубже уверен, там будет туча изменений по сравнению с другими языками. Ну, а разбираться я не вижу смысла, потому что
Цитата Сообщение от alex925 Посмотреть сообщение
нужно использовать настоящие массивы и есть много данных, которые нужно обработать, то используют не этот модуль, а numpy.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2015, 18:05
Помогаю со студенческими работами здесь

Зависает модуль tkinter при использовании модуль Time || python
По приколу решил создать клик тест на питоне. При этом использовал два модуля tkinter для красоты и time для таймера. Но столкнулся с...

Аргумент int main(array<System::String ^> ^args): array, но не std::array?
Здравствуйте. Тема называется так же, как начинается main в любой консольной CLR - программе. Проблема вот в чем: у меня написан...

Модуль яндекс карты выдает ошибку Warning: count(): Parameter must be an array or an object that implements Countable in
Здравствуйте. Скачал и установил на сайт модуль яндекс карты. Но при открытии сайта выходит ошибка: Warning: count(): Parameter...

Warning: array_rand() [function.array-rand]: Second argument has to be between 1 and the number of elements in the array in
Как убрать такую ошибку: Warning: array_rand() : Second argument has to be between 1 and the number of elements in the array in...

Не могу понять, в чем причина ошибки: this array index is invalid for this array
Сделал подпрограмму вычисления двойного интеграла методом трапеций и выдало такую ошибку. В чем причина?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru