1. 程式人生 > >Python高階資料結構之Array

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,