Как изменить индекс списка? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть два списка, как показано ниже:

A = [[0, [1, 2]], [1, [3, 4]], [2, [5, 6]], [3, [7, 8]], [4, [9, 10]], [5, [11, 12]], [6, [13, 14]]]

и

B = [[0, [1, 2]], [1, [4, 5]], [4, [[7, 8], [9, 10]]]]

Я хочу заменить некоторые элементы A на основе некоторых условий, связанных со списком B.

Я написал код, который делает то, что я ищу, как показано ниже:

x = 3
v = [0, 1, 4]

for i in range (x):
    if i in v and B[i][0] == A[i][0]:
        A[i][1][0] = B[i][1][1]

for elem in v:
    if elem not in range(x):

        A[elem][1][0] = B[2][1][1][0]
        A[elem+1][1][0] = B[2][1][1][1]
    else:
        A = A

print (A)   

Моя проблема с этими строками:

for elem in v:
    if elem not in range (x):
        A[elem][1][0] = B[2][1][1][0]
        A[elem+1][1][0] = B[2][1][1][1]

Как видите, после просмотра элементов списка v и проверки, нет ли этих элементов в range (x), в данном случае это элемент 4, я хочу заменить некоторые элементы A с некоторыми элементами B, в этом случае этот элемент равен [4, [[7, 8], [9, 10]]], однако индекс этого элемента в списке B равен 2. Есть ли другой способ использовать 4 в [4, [[7, 8], [9, 10]]], который также является элементом v внутри кода вместо записи B[2]? Я хочу использовать [x[0] for x in B] в качестве индикаторов вместо использования индексов, так как они разные. Спасибо

1 Ответ

1 голос
/ 06 июня 2019

Если вы хотите придерживаться структуры вашего текущего кода, вы можете использовать np.where для этого

x= 3
v = [0, 1, 4]

import numpy as np

for i in range (x):
    if i in v and B[i][0] == A[i][0]:
        A [i][1][0] = B[i][1][1]

for elem in v:
    if elem not in range (x):
        # get index (in this case: 2)
        ind = np.where(np.array([i[0] for i in B]) == elem)[0][0]
        A [elem][1][0] = B[ind][1][1][0]
        A [elem+1][1][0] = B[ind][1][1][1]
    else:
        A = A

print (A)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...