Как написать код для определения индексов, в которых происходит сдвиг, и получения соответствующего значения из другого массива в python? - PullRequest
0 голосов
/ 03 августа 2020

Как написать код для определения индексов, в которых происходит сдвиг, и получения соответствующего значения из другого массива в python?

array1 = (0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,2,2,2,3,3,3,3,3,1,1,1)

array2 = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
          'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
          'w', 'x', 'y', 'z')

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

Желаемый результат:

Indexes: [3, 8, 12, 15, 18, 23] 
Final: ['d', 'i', 'm', 'p', 's', 'x'] 

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вот решение

array1= [0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,2,2,2,3,3,3,3,3,1,1,1]
array2= ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']

cur=array1[0]
indxes=[]
final=[]

for i in range(1,len(array1)):
 if array1[i]!=cur:
    cur=array1[i]
    indxes.append(i)
    final.append(array2[i])

print(indxes)
print(final)
0 голосов
/ 03 августа 2020

Вот возможное решение:

indexes = [i for i in range(1, len(array1)) if array1[i-1] != array1[i]]
final = [array2[i] for i in indexes]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...