Чтение и запись переменной части массива - PullRequest
0 голосов
/ 11 сентября 2018

Как мы все знаем, мы можем легко извлечь данные из массивов, используя нарезку:

>>> L = range(10)
>>> L[::2]
[0, 2, 4, 6, 8]

Я часто пишу код, когда мне нужно использовать нарезку следующим образом:

>>> L[ind:ind+x]

Что меня сейчас интересует, так это то, почему нет единого оператора, который мог бы достичь этого? Например, в Verilog мы могли бы использовать нарезку как:

>>> L[ind+:x]

Есть ли другой способ легко реализовать эту функциональность?

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

почему нет единого оператора для этого?

Синтаксис для нарезки списка не изменился с ранних версий Python. Причина может быть следствием суждения человека или влияния других языков. Что есть, то есть. Мы должны научиться жить с этим.

Есть ли другой способ легко реализовать эту функциональность?

Ну, конечно. Примечание [] является синтаксическим сахаром для __getitem__, а ind:ind+x может быть представлен как slice объект. Возможно, вы предпочитаете второй вариант?

L = list(range(10))

L[3:7]                        # [3, 4, 5, 6]

m, k = 3, 4
L.__getitem__(slice(m, m+k))  # [3, 4, 5, 6]
0 голосов
/ 11 сентября 2018

Нет такого синтаксиса.Единственное, что можно программно манипулировать срезами, это slice объекты.

i = slice(ind, ind+x)
print(x[i])
0 голосов
/ 11 сентября 2018

Нет, у Python нет такого синтаксиса. Это нормально, хотя - Python - это не тот язык, в котором есть десять способов сделать все.

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