Я хочу написать код так:Как я могу использовать двоеточие (:) в переменной
index = 0:2
print(list[index])
, но это не работает.
Есть ли способ сохранить все части синтаксиса [...:...]
в переменной?
Я хочу написать код так:Как я могу использовать двоеточие (:) в переменной
index = 0:2
print(list[index])
, но это не работает.
Есть ли способ сохранить все части синтаксиса [...:...]
в переменной?
Вы хотите slice()
object:
index = slice(0, 2)
print(somelist[index])
slice()
модель старт, стоп и значение большого шага вы можете указать в синтаксисе [start:stop:stride]
подписки, как объект.
Из документации:
Возвращает slice объект, представляющий набор индексов, указанный
range(start, stop, step)
. По умолчанию начальный и конечный аргументы равныNone
. Объекты среза имеют атрибуты данных только для чтенияstart
,stop
иstep
, которые просто возвращают значения аргументов (или их значения по умолчанию).
Под обложках, Python фактически переводит подписку на slice()
объекта при вызове пользовательских __getitem__
методы:
>>> class Foo(object):
... def __getitem__(self, item):
... return item
...
>>> Foo()[42:81:7]
slice(42, 81, 7)
>>> Foo()[:42]
slice(None, 42, None)
жизнеспособной альтернативой было бы хранить запуска и остановки, как отдельные значения:
startindex = 0
stopindex = 2
print(somelist[start:stop])
спасибо, но как насчет «index = -2:» –
@giorgishengelaia. Делайте это неправильно. Просто сохраните переменную 'index' со значением' -2'. Затем скажите 'print (somelist [index:])'. –
@giorgishengelaia: это будет 'slice (-2, None)'.Попробуйте пример 'Foo()'; 'Foo() [- 2:]' возвращает 'срез (-2, None, None)'. –
Вы можете создать объект slice
:
index = slice(0,2)
print(lst[index])
Будьте осторожны, чтобы не использовать list
как имя, чтобы избежать затенения встроенной функции list
.
Из документов:
slice(start, stop[, step])
возвращает объект, представляющий срез множество индексов, определенных
range(start, stop, step)
Нет, вы не можете. Это недействительный синтаксис Python. –
Нет, в Python его невозможно сделать для целых чисел/поплавков. Вы можете использовать их для строки (Ex: index = "0: 2"). –
@leaf: существует действительный синтаксис для выражения * намерения *. –