первый элемент, имеющий индекс 1 вместо 0 в списке кортежей

#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-индексированных списках.