#python #indexing #tuples
Вопрос:
Я хочу, чтобы мой список кортежей начинался с индекса 1
, а не с индекса 0
. Вот пример того, что я имею в виду именно:
list=[('Green',45.87), ('Yellow',67.43), ('Red',89.98)]
Вот чего я хочу:
list[1]=Green 45.87 list[2]=Yellow 67.43 list[3]=Red 89.98.
Как мне это сделать? Спасибо!
Комментарии:
1. Использовать словарь с цифровыми ключами, начинающимися с 1?
2. легко,
list = [()] list
. Хотя я понятия не имею, зачем вам нужна 1 индексация.3. @tolik518 Зависит от языка. Программирование R, например, использует индексирование на основе 1.
4. Ты не можешь. Я имею в виду, что вы можете добавить первый пустой элемент, если хотите, или использовать » 1″, например
list[i 1]
, но индекс всегда начинается с 0 (по крайней мере, на Python).5. @JohnColeman Да, вы правы, ФОРТРАН также будет начинаться с 1.
Ответ №1:
Как правило, вы должны придерживаться языкового стандарта. Однако, если вам действительно нужны эти 1-индексированные списки, то вот несколько базовых кодов:
class List(list): def __setitem__(self, id, data): super().__setitem__(id - 1, data) def __getitem__(self, id): return super().__getitem__(id - 1) sample = List([1, 2, 4, 7]) sample[4] = 3 print(sample[1]) # 1 sample.sort() print(sample) # 1 2 3 4
Здесь мы в основном создаем другой тип списка и переопределяем его методы set amp; get. Обратите внимание, что это может быть несовместимо с некоторыми алгоритмами, основанными на 0-индексированных списках.