#python-3.x #list #iteration
Вопрос:
Я работаю над приведенным ниже фрагментом кода, в котором у меня есть список дат (date_index) и другой список (date_unique) с каждой уникальной датой, которая встречается в (date_index). Я пытаюсь заставить код возвращать индекс каждого вхождения i из date_unique в date_index.
for i in date_unique:
month_index = [i for i in range(len(date_index)) if date_index[i] == (date_unique[0])]
print(month_index)
например, приведенный выше код для элемента 0 в date_unique возвращает выходные данные:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Если я изменю код на date_unique[1] Я получаю результат
[16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
который также повторяется 11 раз (в соответствии с количеством элементов в date_unique.
Результат, который я хочу получить, это:
[0, 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, 40, 41, 42, 43, 44, 45],
continued for i in date_unique.
если вам требуется ввод данных для тестирования
month_index = ['032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '032020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '042020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '052020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '062020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '072020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '082020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '092020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '102020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '112020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '122020', '012021', '012021', '012021', '012021', '012021', '012021', '012021', '012021', '012021', '012021']
date_unique = ['032020', '042020', '052020', '062020', '072020', '082020', '092020', '102020', '112020', '122020', '012021']
Надеюсь, мой вопрос ясен!
большое спасибо
Ответ №1:
Вместо этого вам следует выполнить итерацию date_unique
и добавить сгенерированные списки в основной список.
all_indices = []
for j in date_unique:
month_index = [i for i in range(len(date_index)) if date_index[i] == (date_unique[j])]
all_indices.append(month_index)
Немного более короткий путь был бы
all_indices = []
for date in date_unique:
all_indices.append([i for i in range(len(date_index)) if date_index[i] == date])
Комментарии:
1. Спасибо тебе, Дипак! Это решило проблему, я ценю вашу помощь!