алгоритм, который работает с увеличивающимся числом переменных(python)

#python

Вопрос:

я создал базу данных с использованием 2d-массивов для хранения свободных периодов,которые у каждого из моих друзей есть в школе(например,период 1 и 2 в понедельник будет [«понедельник», 1, 2])

данные хранятся во внешнем файле python, чтобы их можно было читать и записывать.

проблема в том, что я не знаю, как закодировать алгоритм, который работает автоматически, независимо от того, был ли добавлен новый массив или он был удален.

вот мой код:

 exec(open("data.py").read())  free=[["monday"],["tuesday"],["wednesday"],["thursday"],["friday"]]  for i in range(5):  for j in range(7):  if j in d[i] and j in k[i]:  free[i].append(j)  print(free[i])   

и образец технического паспорта

 m=[[5,6],[1,2,3,4],[5,6],[1,2,3,4],[]] d=[[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]] k=[[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]  

Комментарии:

1. Обратите внимание, что это exec(open("data.py").read()) должно быть заменено на import .

Ответ №1:

Поскольку вы используете предварительно названные переменные, это затрудняет адаптацию к более масштабной работе. Это можно исправить с помощью словаря:

 friends = {"m": [[5,6],[1,2,3,4],[5,6],[1,2,3,4],[]],  "d": [[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]],  "k": [[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]}  

Убедитесь, что весь исполняемый код по умолчанию в файле data.py , кроме переменных, подпадает под if __name__ == __main__ действие, чтобы он не запускался по умолчанию и чтобы вы могли использовать:

 import data  free = ["monday","tuesday","wednesday","thursday","friday"]   for friend in data.friends:  res = data.friends[friend]  for i in range(5):  res.insert(i, free[i])  print(friend, ":", str(res))  

Комментарии:

1. извините, я забыл упомянуть ключевую часть своего кода, идея заключалась в том, что я должен был выводить общие свободные периоды (общие числа в каждом массиве) . например: ` друзья{ «d»: [[],[1,2],[3,4,5,6],[3,4,5,6],[1,2]], «к»: [[1,2],[5,6],[3,4],[5,6],[1,2,3,4]]} ` результатом будет: «[[«понедельник»], [«вторник»], [«среда,3,4], [«четверг», 5,6], [«пятница», 1,2]] «или что-то подобное.Я также понял, что в «d», » m » и » k «нет общих свободных периодов, поэтому, пожалуйста, игнорируйте данные для «m».