2016-10-18 5 views
0

есть ли структура данных в python, эквивалентная массиву в cpp? что некоторые элементы инициализированы, а некоторые нет? , например, в списке python: [1,2,3], элементы должны быть последовательно заполнены в массиве cpp может быть [0] == 0, a 1 - произвольный, неинициализированный, [2] == 2структура данных массива python

Есть ли эквивалентная структура cpp-массива в python? пс, питон массив, кажется, не быть эквивалентными, все элементы должны быть заполнены последовательно слишком

enter image description here

+0

каким способом это не «эквивалент»? Просто потому, что вы не можете оставить мусор в определенном элементе списка? –

ответ

0

Вы можете, вероятно, собрать какую-то обертку с использованием словаря:

class CppArray: 
    def __init__(self, value): 
     if value == None: 
      self.data = {} 
      self.length = 0 
     else: 
      self.data = { 0: value } 
      self.length = 1 

    def insert(self, index, value): 
     while index in self.data: 
      tmp = self.data[index] 
      self.data[index] = value 
      value = tmp 
      index = index + 1 
     self.data[index] = value 
     if index >= self.length: 
      self.length = index + 1 

    def __getitem__(self, index): 
     if (index < 0 or index >= self.length): 
      # must create IndexException 
      raise IndexException("Index out of range") 
     if index in self.data: 
      return self.data[index] 
     else: 
      return None 

x = CppArray("i") 
x.insert(0,10) 
x.insert(200,30) 
x[1] 

Очевидно, что это быстрый набросок отсутствует много деталей, которые сделали бы класс более полезным.

Для других идей о специальных методов, которые вы могли бы использовать, проверьте:

https://docs.python.org/3/reference/datamodel.html

Смежные вопросы