Непрерывное переназначение однострочного блока - PullRequest
0 голосов
/ 24 мая 2018

Это дополнительный вопрос.Ранее я спрашивал здесь , как назначить в одной строке список чанков для полного списка.

Теперь мне нужно выполнить то же назначение, но когда доступ к полному списку не является смежным,Итак, как показано в следующем коде, у меня есть список фрагментов x и полный список h.Я хочу переназначить значения, хранящиеся в x, в правильные позиции h , когда к h нет непрерывного доступа .

index = 0
for t1 in range(lbp, ubp):
   h[1 + 2*t1] = x[index]
   index = index + 1

Кто-нибудь знает, как написать это в одной строке / выражении ?

Как и раньше, для целей тестирования вы можете использовать:

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4

И ожидаемый результат:

h = [1, 2, 3, 4, 5, 20, 7, 21, 9, 10]

Отказ от ответственности: Это часть более крупного проекта, и я максимально упростил вопросы.Вы можете ожидать, что размеры матрицы будут правильными, но если вы думаете, что я что-то упустил, пожалуйста, попросите об этом.

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете использовать назначение среза, чтобы сделать это эффективно и компактно.

h = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = [20, 21]
lbp = 2
ubp = 4
h[2*lbp + 1: 2*ubp + 1: 2] = x
print(h)

вывод

[1, 2, 3, 4, 5, 20, 7, 21, 9, 10]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...