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

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

03.10.2018, 09:49. Показов 2602. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru