Python高階資料結構之Array
本章是Python高階資料結構的第二篇,由於之前沒有接觸過太多的Python版本的資料結構,所以在學習的過程中集百家之長和自己的見解,加以實踐,學習Python。 Python中用到tuple的方法,和注意事項都以程式碼的形式體現,高階之處在與其可以處理特殊場景的大部分資料描述問題。PS:本系列所有程式碼全部基於Python 3.5,如果有需要參考的請在pyCharm中設定版本。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017-4-25 16:38
# @Author : coderManFans
# @Site : Python高階資料結構
# Array:array 模組定義了一個很像list的新物件型別,不同的地方在於限定了這個型別只能有
# 一種資料型別的元素,只能是數字型別或者是字串型別,或者是物件型別
# array元素的型別是在建立並使用的時候確定的
# 應用背景:如果你的程式需要優化記憶體的使用,並且你確定你希望在列表中儲存的是同樣的資料型別,
# 那麼可以使用array模組。使用list也可以,但是list由於維護了每個元素的資料型別,所以佔用的記憶體肯定比array
# 多,但是呢,就效率而言list與array相差無幾。
# 注意事項:在使用array進行計算的時候,需要特別注意建立list的操作。例如列表推導式(list comprehension)
# 的時候,會將array整個轉換為list,使得儲存空間膨脹。可以使用生成器表示式建立新的array
# Python 本身沒有陣列這個說法,有的就是list和tuple....
# array模組用於提供基本數字,字元型別的陣列,用於容納字元號,整形,浮點型等基本型別
# 注意不支援如此字串陣列格式:['asd','2323','asdfad23']
# @File : arrayDemo.py
# @Software: PyCharm
import array
#1.array的初始化
# 'i':表示為整形
# 'c':表示為單個字元的字串
arr1 = array.array('i',[1,2,3,4,5,6,6])
print(arr1)
arr2 = array.array(arr1.typecode,(2*x for x in arr1))
print(arr2)
arr3 =array.array('u',['a','b','c'])
print(arr3)
#2.初始化方式2 因為使用array是為了節省空間,所以更傾向於使用in-place操作。
#更高效的方法可以使用enumerate,對於較大的array,這種in-place修改能夠比用生成器建立一個
#新的array至少提升15%的速度
arr4 = array.array('i',[1,2,3,4,5])
for i , x in enumerate(arr4):
arr4[i] = 2*x
print(arr3)
#----------------------------------------
#3. array的操作Api
#3.1 追加操作
arr4.append(3)
print(arr4)
#3.2 在索引index下新增一個元素,原來的值往後移動
arr4.insert(2,23)
arr4.insert(4,2)
print(arr4)
#3.3 返回某個元素在陣列中出現的次數
count = arr4.count(2)
print(count)
#3.4 在陣列尾部批量新增元素
arr4.extend([2,3,4,4])
print(arr4)
#3.5 返回某個元素第一次出現的索引值
index1 = arr4.index(2)
print(index1)
#3.6 返回陣列的長度
len1 = arr4.__len__()
print(len1)
print(len(arr4))
#3.7 從尾部刪除一個元素,
val1 = arr4.pop()
print(val1)
#3.8 從指定位置刪除一個元素,預設刪除最後一個
print(arr4)
val2 = arr4.pop(9)
print(val2)
print(arr4)
#3.9 陣列反轉
arr4.reverse()
print(arr4)
#3.10 刪除第一次出現的元素
arr4.remove(2)
print(arr4)
#3.11 陣列轉換為list
list1 =arr4.tolist()
print(list1)
#3.12 如果是字元格式可以呼叫該方法
arr3.tounicode()
print(arr3)
#還有一些其他的方法,但是很少使用,比如
#fromfile() tofile() fromlist() fromstring()
#後面遇到會再次更新
相關推薦
Python高階資料結構之Array
本章是Python高階資料結構的第二篇,由於之前沒有接觸過太多的Python版本的資料結構,所以在學習的過程中集百家之長和自己的見解,加以實踐,學習Python。 Python中用到tuple的方法,和注意事項都以程式碼的形式體現,高階之處在與其可以處理特
Python高階資料結構之Collection
本章是Python高階資料結構的第一篇,由於之前沒有接觸過太多的Python版本的資料結構,所以在學習的過程中集百家之長和自己的見解,加以實踐,學習Python。 Python中用到tuple的方法,和注意事項都以程式碼的形式體現,高階之處在與其可以處理特
C Primer Plus--高階資料結構之二叉樹
目錄 二叉搜尋樹 Binary Search Tree 用C構建二叉樹ADT 樹結構的定義 C Primer Plus--高階資料結構表示之二叉樹 二叉搜尋樹 Binary Search Tree 二叉樹是一種高階資料結構。樹中的每個節點都包含一個專案和兩個指向其他
python 基礎資料結構之字串操作
#切割部分s = 'I love you more than i can say' # 切割字串 # sep:指定按照什麼進行切割,預設按照空格切割 # maxsplit:指定最大切割次數,預設不限制次數 # ret = s.split(sep='abc', maxsplit=1) # 從右邊進行切割
Python基礎資料結構之資料轉換(Dict,Set,Tuple,List)
本章是Python基礎資料結構的第六篇,由於之前沒有接觸過太多的Python版本的資料結構,所以在學習的過程中集百家之長和自己的見解,加以實踐,學習Python。 Python中用到tuple的方法,和注意事項都以程式碼的形式體現 #!/usr
Python基礎資料結構之list
本章開啟了專欄,對所學Python內容進行系統性的總結和學習,查缺補漏 希望通過該專欄能夠提升基於Python的開發能力,同時該專欄具有一定的針對性,可以系統整體的學習總結自己需要的東西,以及可以通過這些迅速運用到實踐中。 #!/usr/bi
Python基礎資料結構之tuple
本章是Python基礎資料結構的第四篇,由於之前沒有接觸過太多的Python版本的資料結構,所以在學習的過程中集百家之長和自己的見解,加以實踐,學習Python。 Python中用到tuple的方法,和注意事項都以程式碼的形式體現 #!/usr/bin/e
nginx 學習八 高階資料結構之基數樹ngx_radix_tree_t
1 nginx的基數樹簡介 基數樹是一種二叉查詢樹,它具備二叉查詢樹的所有優點:檢索、插入、刪除節點速度快,支援範圍查詢,支援遍歷等。在nginx中僅geo模組使用了基數樹。nginx的基數樹使用ngx_radix_tree_t這個結構體表示的。ngx_radix_tree
c#資料結構之Array、ArrayList、List、LinkedList對比分析
一、前言: 在c#資料結構中,集合的應用非常廣泛,無論是做BS架構還是CS架構開發,都離不開集合的使用,比如我們常見的集合包括:Array、ArrayList、List、LinkedList等。這一些資料集合,在功能上都能夠實現集合的存取,但是他們內部有什麼區別,在使用時需要注意一些什麼呢?下面根據個人的
資料結構之Array、ArrayList、List、LinkedList對比分析
一、前言: 在c#資料結構中,集合的應用非常廣泛,無論是做BS架構還是CS架構開發,都離不開集合的使用,比如我們常見的集合包括:Array、ArrayList、List、LinkedList等。這一些資料集合,在功能上都能夠實現集合的存取,但是他們內部有什麼區別,在使用時需要注意一些什麼呢?下面根據個人的
用python講解資料結構之樹的遍歷
![](https://img2020.cnblogs.com/blog/1060878/202012/1060878-20201208100253331-1349700160.png) # 樹的結構 樹(tree)是一種抽象資料型別或是實現這種抽象資料型別的資料結構,用來模擬具有樹狀結構性質的資料集合 它
Python資料結構之: 棧與佇列
棧(stacks) 是一種只能通過訪問其一端來實現資料儲存與檢索的線性資料結構,具有後進先出(last in first out,LIFO)的特徵 stack = [] stack.append("A") #A入棧 stack.append("B") #B入棧 st
python資料結構之KMP演算法的實現
我相信網上已經有很多關於KMP演算法的講解,大致都是關於部分匹配表的實現思路和作用,還有就是目標串的下標不變,僅改變模式串的下標來進行匹配,確實用KMP演算法,當目標串很大模式串很小時,其效率很高的,但都是相對而言。至於對於部分匹配表的作用以及實現思路,建議看一下這篇文章寫的是比較易懂的
python資料結構之二叉樹
這裡用python 實現了二叉樹 # Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left =
Python 6-1.內建資料結構之list(基礎篇)
-常見內建資料結構- list 列表 set 集合 dict 字典 tuple 元祖-本章大綱- list(列表): 一組由順序的資料的組合 建立列表 有值列表 無值列表(空列表
python資料結構之串——概述和基本演算法
概述: 字串(string)簡稱串,也是一種線性結構。在python中和array差不多,因為py的陣列也可以包括各種字元(在C/Java一類的語法中,陣列必須是同一種資料型別的元素)。線性結構,有限序列,是主要特點。串其中可以包含各種元素,也是計算機主要處理的一類物件。因
Cris 複習Python日記(四):Python 資料結構之序列和列表
1. 簡單認識序列和列表 # 序列 # 序列是Python 中最基本的資料結構,用於儲存一組有序的資料,所有資料都在序列中擁有一個唯一索引,並且按照元素新增的順序來指定序列 # 序列的分類 # 1.
python資料結構之棧和佇列
1.功能實現 之前文章有,可以點開看看 棧 佇列 2.應用(1)括號匹配及字尾表示式 class Solution(object): def isValid(self, s): """ :type s: str :rtype
python資料結構之連結串列
1.功能實現 連結串列(Linked list)是一種常見的基礎資料結構,是一種線性表,但是並不會按線性的順序儲存資料,而是在每一個節點裡存到下一個節點的指標(Pointer)。由於不必須按順序儲存,連結串列在插入的時候可以達到O(1)的複雜度,比另一種線性表順序錶快得多,但是查詢一個節點或者訪
python 資料結構之列表操作
lt = [1, 2, 3, 4, 5] #列表取值與切片 #切片規則與字串相同 print(lt[0])#1 print(lt[-1])#5 print(lt[1:3])#[2, 3] print(len(lt))#列表長度5 # 修改元素 lt[0] = 100 print(lt)#[100,