Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420

Передал массив в функцию, но там с ним работать не выходит

03.10.2018, 09:49. Показов 2654. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ну вот есть массив, в функции надо что-то с ним сделать.

Я пробовал передать массив и там обработать.

Пробовал и ничего не передавать, а return.
Т.е: Массив = Функция() ## А у функция возвращает массив. Но что-то не выходит, хотя в других ситуациях всё работает.

Вот скриншот сделал, не подскажите почему такое?
Миниатюры
Передал массив в функцию, но там с ним работать не выходит  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2018, 09:49
Ответы с готовыми решениями:

Как передать файл в класс, и работать там с ним?
Добрый день, у меня есть программа ,её надо реализовать через классы. Я работаю с фракталом Мандельброта. Программа рисует...

Почему если функцию создать в main и использовать ее там, о выходит ошибка?
Почему если функцию создать в main и использовать ее там, о выходит ошибка? А если я создам эту функцию за пределами main то код будет...

Ассоциативный массив как работать с ним
Уважаемые выручайте, нужна литература и желательно ответ в этой теме. вытаскиваю все строки из таблицы где q_id равен 1 ...

8
165 / 114 / 59
Регистрация: 12.07.2018
Сообщений: 277
03.10.2018, 10:18
Цитата Сообщение от Masai Посмотреть сообщение
Вот скриншот сделал
Выложите код, по нему разбираться удобнее.
0
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420
03.10.2018, 10:24  [ТС]
Цитата Сообщение от Бард Посмотреть сообщение
Выложите код, по нему разбираться удобнее.

Понял, выполняю. Благо пока код короткий. =)

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
36
37
38
def Create_Array(Array_main, Text):
    array_tmp = []
    size = 0
 
    with open(Text, 'r') as f:
        for line in f:
            for i in line:
                if i != "\n":
                    array_tmp.append(int(i))
            size += 1
        size_2 = len(line)
 
    Array = [[0] * size_2] * size
    iterator = 0
    for i in range(0, size):
        for j in range(0, size_2):
            Array[i][j] = array_tmp[iterator]
            iterator += 1
    f.close()
 
    Array_main = Array.copy()
 
## Это пока "болванка". Не сделана эта функция.
def addition (Array, Array_2):
 
    C = [[0] * len(Array)] * len(Array_2)
    print(len(Array))
    print(len(Array_2))
 
 
def main():
 
    Array_B = []
    Array_A =[]
    Create_Array(Array_A, "matrix_1.txt")
    print(Array_A)
 
main()
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
03.10.2018, 11:05
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
36
37
38
def Create_Array(Array_main, Text):
    array_tmp = []
    size = 0
 
    with open(Text, 'r') as f:
        for line in f:
            for i in line:
                if i != "\n":
                    array_tmp.append(int(i))
            size += 1
        size_2 = len(line)
 
    Array = [[0] * size_2] * size
    iterator = 0
    for i in range(0, size):
        for j in range(0, size_2):
            Array[i][j] = array_tmp[iterator]
            iterator += 1
    f.close()
 
    Array_main.extend(Array)
 
## Это пока "болванка". Не сделана эта функция.
def addition (Array, Array_2):
 
    C = [[0] * len(Array)] * len(Array_2)
    print(len(Array))
    print(len(Array_2))
 
 
def main():
 
    Array_B = []
    Array_A =[]
    Create_Array(Array_A, "matrix_1.txt")
    print(Array_A)
 
main()
1
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420
03.10.2018, 11:29  [ТС]
ТабуретY спасибо =)

Теперь взаимодействие в функции с массивом есть.

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

Матрица в файле вот такая:
123
432
444
657

И когда я делаю в цикле Array[i][j] = array_tmp[iterator] и для тестировки вывожу Array[i][j] на каждой итерации, всё идёт как надо. 1 2 3 4 3 2 4 4 4 6 5 7 выводится. Из чего следует что Array заполняется как надо от начала до конца.

Но когда я делаю Array_main.extend(Array) и вывожу в main уже массив. То выводит [[6, 5, 7], [6, 5, 7], [6, 5, 7], [6, 5, 7]]
Вероятно сам справлюсь с этой дилеммой.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
03.10.2018, 11:55
Лучший ответ Сообщение было отмечено Masai как решение

Решение

Оказывается если умножить списки в списке, то результат умножения ссылки на один список и меняются поэтому все списки разом

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
36
37
38
39
def Create_Array(Array_main, Text):
    array_tmp = []
    size = 0
 
    with open(Text, 'r') as f:
        for line in f:
            for i in line:
                if i != "\n":
                    array_tmp.append(int(i))
            size += 1
        size_2 = len(line)
 
    Array = []
    iterator = 0
    for i in range(0, size):
        t_arr = []
        for j in range(0, size_2):
            t_arr.append(array_tmp[iterator])
            iterator += 1
        Array.append(t_arr)
 
    Array_main.extend(Array)
 
## Это пока "болванка". Не сделана эта функция.
def addition (Array, Array_2):
 
    C = [[0] * len(Array)] * len(Array_2)
    print(len(Array))
    print(len(Array_2))
 
 
def main():
 
    Array_B = []
    Array_A =[]
    Create_Array(Array_A, "matrix_1.txt")
    print(Array_A)
 
main()
1
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420
03.10.2018, 13:04  [ТС]
ТабуретY, благодарю! Я вроде бы понял. Вы сделали ещё один временный одномерный массив который на каждой итерации вставляет целую строку в основном двумерном массиве, затем обновляется и так ещё одну строку и т.д.

А не скажите, как тогда двумерный массив оформлять по заданным размерам? Это мне на будущее.

Скажем массив 3 на 4.

Я просто часто встречал именно такую технику создания.

Например вот - Инициализация двумерного массива (сообщение MrLinch).
Но как я понимаю это вот несёт свои нюансы не всегда хорошие
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
03.10.2018, 13:30
Цитата Сообщение от Masai Посмотреть сообщение
Скажем массив 3 на 4.
можно создать список списков с помощью генераторов

Python
1
2
3
4
5
6
7
ar = [[0 for _ in range(4) ] for _ in range(3)]
 
print(ar)
 
ar[0][0] = 1
 
print(ar)
1
11 / 11 / 2
Регистрация: 13.07.2014
Сообщений: 420
03.10.2018, 13:33  [ТС]
ТабуретY , ещё раз спасибо! =)
Понял, тогда буду так вот делать. Генератором
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2018, 13:33
Помогаю со студенческими работами здесь

Динамический массив, как работать с ним?
День добрый. Как можно записать на шарпах, в массив следуюшую вещь. if (array == enterNum) { result.Add("элемент...

Кто передал в функцию props
Доброго времени суток. Посмотрите, пожалуйста, скрин из консоли. В пропсах там сидят данные. Не могу понять откуда они взялись. ...

Получить массив файлов папки и работать с ним
Подскажите, что я неправильно делаю! Мне необходимо выбрать папку с image, далее провести некие операции с изменением самих изображений...

Динамически создать массив Textbox ов а потом работать с ним
Первый раз пишу на C# да и цель впервые такая. Вообщем надо чтоб при нажатии кнопки создавался массив TextBox-ов с указаной заранее...

Как записать массив в таблицу что бы в дальнейшим с ним работать?
Доброго времени суток! Помогите с задачей. Нужно создать кнопку,которая считает данные(массив),после чего он изобразится в таблице. Плюс...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru