溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中順序表怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2021-08-02 10:00:50 來源:億速云 閱讀:136 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python中順序表怎么實(shí)現(xiàn),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

順序表python版的實(shí)現(xiàn)(部分功能未實(shí)現(xiàn))

結(jié)果展示:

Python中順序表怎么實(shí)現(xiàn)

代碼示例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class SeqList(object):
 def __init__(self, max=8):
  self.max = max  #創(chuàng)建默認(rèn)為8
  self.num = 0
  self.date = [None] * self.max
  #list()會(huì)默認(rèn)創(chuàng)建八個(gè)元素大小的列表,num=0,并有鏈接關(guān)系
  #用list實(shí)現(xiàn)list有些荒謬,全當(dāng)練習(xí)
  #self.last = len(self.date)
  #當(dāng)列表滿時(shí),擴(kuò)建的方式省略
 def is_empty(self):
  return self.num is 0

 def is_full(self):
  return self.num is self.max

 #獲取某個(gè)位置的元素
 def __getitem__(self, key):
  if not isinstance(key, int):
   raise TypeError
  if 0<= key < self.num:
   return self.date[key]
  else:
   #表為空或者索引超出范圍都會(huì)引發(fā)索引錯(cuò)誤
   raise IndexError

 #設(shè)置某個(gè)位置的元素
 def __setitem__(self, key, value):
  if not isinstance(key, int):
   raise TypeError
  #只能訪問列表里已有的元素,self.num=0時(shí),一個(gè)都不能訪問,self.num=1時(shí),只能訪問0
  if 0<= key < self.num:
   self.date[key] = value #該位置無元素會(huì)發(fā)生錯(cuò)誤
  else:
   raise IndexError

 def clear(self):
  self.__init__()

 def count(self):
  return self.num

 def __len__(self):
  return self.num

 #加入元素的方法 append()和insert()
 def append(self,value):
  if self.is_full():
   #等下擴(kuò)建列表
   print("list is full")
   return
  else:
   self.date[self.num] = value
   self.num += 1

 def insert(self,key,value):
  if not isinstance(key, int):
   raise TypeError
  if key<0: #暫時(shí)不考慮負(fù)數(shù)索引
   raise IndexError
  #當(dāng)key大于元素個(gè)數(shù)時(shí),默認(rèn)尾部插入
  if key>=self.num:
   self.append(value)
  else:
   #移動(dòng)key后的元素
   for i in range(self.num, key, -1):
    self.date[i] = self.date[i-1]
   #賦值
   self.date[key] = value
   self.num += 1

 #刪除元素的操作
 def pop(self,key=-1):
  if not isinstance(key, int):
   raise TypeError
  if self.num-1 < 0:
   raise IndexError("pop from empty list")
  elif key == -1:
   #原來的數(shù)還在,但列表不識(shí)別他
   self.num -= 1
  else:
   for i in range(key,self.num-1):
    self.date[i] = self.date[i+1]
   self.num -= 1

 def index(self,value,start=0):
  for i in range(start, self.num):
   if self.date[i] == value:
    return i
  #沒找到
  raise ValueError("%d is not in the list" % value)

 #列表反轉(zhuǎn)
 def reverse(self):
  i,j = 0, self.num - 1
  while i<j:
   self.date[i], self.date[j] = self.date[j], self.date[i]
   i,j = i+1, j-1

if __name__=="__main__":
 a = SeqList()
 print(a.date)
 #num == 0
 print(a.is_empty())
 a.append(0)
 a.append(1)
 a.append(2)
 print(a.date)
 print(a.num)
 print(a.max)
 a.insert(1,6)
 print(a.date)
 a[1] = 5
 print(a.date)
 print(a.count())

 print("返回值為2(第一次出現(xiàn))的索引:", a.index(2, 1))
 print("====")
 t = 1
 if t:
  a.pop(1)
  print(a.date)
  print(a.num)
 else:
  a.pop()
  print(a.date)
  print(a.num)
 print("========")
 print(len(a))

 a.reverse()
 print(a.date)
 """
 print(a.is_full())
 a.clear()
 print(a.date)
 print(a.count())
 """

以上是“Python中順序表怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI