[轉載] python數組的使用

參考鏈接: Python中整數的最大可能值是多少?

原文地址為:

python數組的使用

?

?

?

??

? ?

? ?python數組的使用? ??

? ?

??

?

?

? ??

?

?

?

? ?python數組的使用?

??

?

? ?2010-07-28 17:17?

??

?

? ?1、Python的數組分三種類型:?

? ?(1) list 普通的鏈表,初始化后可以通過特定方法動態增加元素。?

? ?定義方式:arr = [元素]?

??

? ?(2) Tuple 固定的數組,一旦定義后,其元素個數是不能再改變的。?

? ?定義方式:arr = (元素)?

??

? ?(2) Dictionary 詞典類型, 即是Hash數組。?

? ?定義方式:arr = {元素k:v}?

??

? ?2、下面具體說明這些數組的使用方法和技巧:?

??

??

? (1) list 鏈表數組?

??

? a、定義時初始化?

? ?a = [1,2,[1,2,3]]?

??

??

? b、定義時不初始化?

? ?一維數組:?

? ?arr = []?

??

? ?多維數組:?

? ?arr = [i for i in range(10), 1,[]] #注意, i for in xx 這個必須放在第一個位置,否則要先定義i,?

??

? ?如:?

??

? arr = [i for i in range(5), j for j in range(5), []]?

? ?這是錯誤的?

??

? i = 0 j = 0 arr = [i for i in range(5), j for j in range(5), []]?

? ?這是正確的?

??

??

? c、del 語句 和 : 的用法?

? ?可以用 start : end 表示數組里的一個區間 ( i >= start and i < end)?

? ?del 刪除數組里的指定元素?

? ?如: del arr[0]?

? ? ? ? ? ?del arr[0, 2]?

? ? ? ? ? newarr = arr[0, 2]?

??

??

? d、遍歷數組:?

? ?for k, v in enumerate(arr):?

? ? ? ? ? ?print k, v?

??

??

? e、增加元素:?

? ?一維?

? ?arr.append('aaa')?

? ?二維?

? ?arr[0].append('aaa')?

? ?如果要在任意位置插入用 arr.insert(n, 值)?

? ?此外還有一種特殊的用法是:?

? ?arr += [數組元素]?

? ?在不指定下標的情況下,是允許用 += 增加數組元素的。?

??

??

? (2) Tuple 固定數組?

? ?Tuple 是不可變 list,一旦創建了一個 tuple 就不能以任何方式改變它。?

? ?下面拿具體示例說明:?

? ?>>> t = ("a", "b", "c", "d", "e")? ? ? ? ? ? ? #[1] 用小括號包圍來定義?

? ?>>> t?

? ?('a', 'b', 'c', 'd', 'e')?

? ?>>> t[0]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#[2] 直接列出某下標的元素?

? ?'a'?

? ?>>> t[-1]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #[3] 負數表示,從后面倒數的索引 -1 為倒數第一個, 0是順數第一個?

? ?'example'?

? ?>>> t[1:3]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#[4] 這里 1:3 是 i>=1 and i<3 的區間?

? ?('b', 'mpilgrim')?

??

? ?Tuple 沒有的方法:?

? ?[1] 不能向 tuple 增加元素,沒有 append 、 extend 、insert 等方法。?

? ?[2] 不能從 tuple 刪除元素,沒有 remove 或 pop 方法。?

? ?[3] 不能在 tuple 中查找元素,沒有 index 方法(index是查找而不是索引,索引直接用下標即可,如:t[0])。?

??

? ?使用 tuple 的好處:?

? ?* Tuple 比 list 操作速度快。如果您定義了一個值的常量集, 并且唯一要用它做的是不斷地遍歷它, 請使用 tuple 代替 list。?

? ?* 如果對不需要修改的數據進行 “寫保護”, 可以使代碼更安全。使用 tuple 而不是 list 如同擁有一個隱含的 assert 語句, 說明這一數據是常量。如果必須要改變這些值, 則需要執行 tuple 到 list 的轉換 (需要使用一個特殊的函數)。?

? ?* 還記得我說過 dictionary keys 可以是字符串, 整數和 “其它幾種類型”嗎? Tuples 就是這些類型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。實際上, 事情要比這更復雜。Dictionary key 必須是不可變的。Tuple 本身是不可改變的, 但是如果您有一個 list 的 tuple, 那就認為是可變的了, 用做 dictionary key 就是不安全的。只有字符串, 整數或其它對 dictionary 安全的 tuple 才可以用作 dictionary key。?

??

? ?Tuple 可以轉換成 list, 反之亦然。?

? ?轉換方式為:?

? ?t = list( t )?

? ?反之:?

? ?arr = tuple( arr )?

??

??

? (2) Dictionary (哈希數組)詞典數組?

??

? ?#Dictionary 的用法比較簡單,它可以存儲任意值,并允許是不同類型的值,下面實例來說明:?

? ?#下面例子中 a 是整數, b 是字符串, c 是數組,這個例子充分說明哈希數組的適用性。?

? ?dict_arr = {'a': 100, 'b':'boy', 'c':['o', 'p', 'q']}?

??

? ?#可以直接增加一個元素,如果同名,則會改變原來的key的元素的值?

? ?dict_arr['d'] = 'dog'?

??

? ?#輸出所有的key?

? ?print dict_arr.keys()?

??

? ?#輸出所有的value?

? ?print dict_arr.values()?

??

? ?#遍歷數組?

? ?import types?

? ?for k in dict_arr:?

? ? ? ?v = dict_arr.get(k)?

? ? ? ?if type(v) is types.ListType: #如果數據是list類型,繼續遍歷?

? ? ? ? ? ?print k, '---'?

? ? ? ? ? ?for kk, vv in enumerate(v):?

? ? ? ? ? ? ? ?print kk, vv?

? ? ? ? ? ?print '---'?

? ? ? ?else:?

? ? ? ? ? ?print dict_arr.get(k)?

? list的方法?

? L.append(var) #追加元素?

? L.insert(index,var)?

? L.pop(var) #返回最后一個元素,并從list中刪除之?

? L.remove(var) #刪除第一次出現的該元素?

? L.count(var) #該元素在列表中出現的個數?

? L.index(var) #該元素的位置,無則拋異常?

? L.extend(list) #追加list,即合并list到L上?

? L.sort() #排序?

? L.reverse() #倒序?

? list 操作符:,+,*,關鍵字del?

? a[1:] #片段操作符,用于子list的提取?

? [1,2]+[3,4] #為[1,2,3,4]。同extend()?

? [2]*4 #為[2,2,2,2]?

? del L[1] #刪除指定下標的元素?

? del L[1:3] #刪除指定下標范圍的元素?

? list的復制?

? L1 = L #L1為L的別名,用C來說就是指針地址相同,對L1操作即對L操作。函數參數就是這樣傳遞的?

? L1 = L[:] #L1為L的克隆,即另一個拷貝。?

??

? list comprehension?

? [ <expr1> for k in L if <expr2> ]?

??

? 2、dictionary: 字典(即C++標準庫的map)?

? dict = {‘ob1′:’computer’, ‘ob2′:’mouse’, ‘ob3′:’printer’}?

? 每一個元素是pair,包含key、value兩部分。key是Integer或string類型,value 是任意類型。?

? 鍵是唯一的,字典只認最后一個賦的鍵值。?

??

? dictionary的方法?

? D.get(key, 0) #同dict[key],多了個沒有則返回缺省值,0。[]沒有則拋異常?

? D.has_key(key) #有該鍵返回TRUE,否則FALSE?

? D.keys() #返回字典鍵的列表?

? D.values()?

? D.items()?

??

? D.update(dict2) #增加合并字典?

? D.popitem() #得到一個pair,并從字典中刪除它。已空則拋異常?

? D.clear() #清空字典,同del dict?

? D.copy() #拷貝字典?

? D.cmp(dict1,dict2) #比較字典,(優先級為元素個數、鍵大小、鍵值大小)?

? #第一個大返回1,小返回-1,一樣返回0?

??

? dictionary的復制?

? dict1 = dict #別名?

? dict2=dict.copy() #克隆,即另一個拷貝。?

??

? 3、tuple:元組(即常量數組)?

? tuple = (‘a’, ‘b’, ‘c’, ‘d’, ‘e’)?

? 可以用list的 [],:操作符提取元素。就是不能直接修改元素。?

??

? 4、string: 字符串(即不能修改的字符list)?

? str = “Hello My friend”?

? 字符串是一個整 體。如果你想直接修改字符串的某一部分,是不可能的。但我們能夠讀出字符串的某一部分。?

? 子字符串的提取?

? str[:6]?

? 字符串包含 判斷操作符:in,not in?

? “He” in str?

? “she” not in str?

??

? string模塊,還提供了很多方法,如?

? S.find(substring, [start [,end]]) #可指范圍查找子串,返回索引值,否則返回-1?

? S.rfind(substring,[start [,end]]) #反向查找?

? S.index(substring,[start [,end]]) #同find,只是找不到產生ValueError異常?

? S.rindex(substring,[start [,end]])#同上反向查找?

? S.count(substring,[start [,end]]) #返回找到子串的個數?

??

? S.lowercase()?

? S.capitalize() #首字母大寫?

? S.lower() #轉小寫?

? S.upper() #轉大寫?

? S.swapcase() #大小寫互換?

??

? S.split(str, ‘ ‘) #將string轉list,以空格切分?

? S.join(list, ‘ ‘) #將list轉string,以空格連接?

??

? 處理字符串的內置函數?

? len(str) #串長度?

? cmp(“my friend”, str) #字符串比較。第一個大,返回1?

? max(‘abcxyz’) #尋找字符串中最大的字符?

? min(‘abcxyz’) #尋找字符串中最小的字符?

??

? string的轉換?

??

? oat(str) #變成浮點數,float(“1e-1″) 結果為0.1?

? int(str) #變成整型, int(“12″) 結果為12?

? int(str,base) #變成base進制整型數,int(“11″,2) 結果為2?

? long(str) #變成長整型,?

? long(str,base) #變成base進制長整型,?

??

? 字符串的格式化(注意其轉義字符,大多如C語言的,略)?

? str_format % (參數列表)??

??

?

? ? ?

??

?

? ? ?

??

??

? 6. 列表切片操作?

??

? ? 1. a = [1,2,3,4,5]??

??

? ? 2. >>> a[::2] # iterate over the whole list in 2-increments??

??

? ? 3. [1,3,5]??

??

? ? 4.??

??

? ? 5. # 列表逆序??

??

? ? 6. >>> a[::-1]??

??

? ? 7. [5,4,3,2,1]?

??

?

? ? ?

??

?

? ? ?

??

??

? 8. 利用字典格式化字符串view plaincopy to clipboardprint?? 1. >>> print "The %(foo)s is %(bar)i." % {'foo': 'answer', 'bar':42}? ?2. The answer is 42.? ?3.? ?4. >>> foo, bar = 'question', 123? ?5.? ?6. >>> print "The %(foo)s is %(bar)i." % locals()? ?7. The question is 123. 9. 保留精確數因為round()返回指類型為浮點數,所以需要加上str()view plaincopy to clipboardprint?? 1. >>> str(round(1234.5678, -2))? ?2. '1200.0'? ?3. >>> str(round(1234.5678, 2))? ?4. '1234.57' 10. and/or 條件選擇view plaincopy to clipboardprint?? 1. x = is_ok() and "Yes" or "No"? ?2.? ?3. # 等價于? ?4. if is_ok():? ?5. x = "Yes"? ?6. else:? ?7. x = "No"? ?8. 11. 列表賦值y = x 相當于 指針傳遞;y = x[:]相當于 值傳遞。view plaincopy to clipboardprint?? 1. >>> x = [1,2,3]? ?2. >>> y = x? ?3. >>> y[2] = 7? ?4. >>> y? ?5. [1, 2, 7]? ?6. >>> x? ?7. [1, 2, 7]? ?8. >>> y = x[:]? ?9. >>> y[2] = 8? ?10. >>> y? ?11. [1, 2, 8]? ?12. >>> x? ?13. [1, 2, 7]??

??

?

? ? ?

??

?

? ? ?

??

?

轉載請注明本文地址:

python數組的使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540571.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

scala中循環守衛_Scala中的循環

scala中循環守衛Scala中的循環 (Loops in Scala) In programming, many times a condition comes when we need to execute the same statement or block of code more than one time. It could be difficult to write the same code multiple times, so programing language d…

50個必備基礎命令

1.tar創建一個新的tar文件$ tar cvf archive_name.tar dirname/解壓tar文件$ tar xvf archive_name.tar查看tar文件$ tar tvf archive_name.tar2. grep在文件中查找字符串(不區分大小寫)$ grep -i "the" demo_file輸出成功匹配的行&#xff0c;以及該行之后的三行$ g…

NM的完整形式是什么?

NM&#xff1a;無消息 (NM: No Message) NM is an abbreviation of "No Message". NM是“無消息”的縮寫。 It is an expression, which is commonly used in the Gmail platform. It is also written as N/M or n/m or *n/m*. It is written in the subject of the…

[轉載] python中全局變量和局部變量解析

參考鏈接&#xff1a; Python中的全局變量和局部變量 python函數中可以訪問全局變量但是不能給全局變量賦值&#xff0c;除非進行顯式聲明global a 比如定義了全局變量 a 在函數my_fun()中可以直接訪問a的值&#xff0c;而不需要global全局變量申明。下圖為上面代碼運行輸出 …

【iCore4 雙核心板_FPGA】例程十六:基于雙口RAM的ARM+FPGA數據存取實驗

實驗現象&#xff1a; 核心代碼&#xff1a; int main(void) {/* USER CODE BEGIN 1 */int i;int address,data;char error_flag 0;char receive_data[50];char buffer[8];char *p;/* USER CODE END 1 *//* MCU Configuration-----------------------------------------------…

[轉載] Python中TFTP的理解

參考鏈接&#xff1a; Python中的打包pack和拆包unpack參數 Num01–>TFTP協議介紹 TFTP&#xff08;Trivial File Transfer Protocol,簡單文件傳輸協議&#xff09; 是TCP/IP協議族中的一個用來在客戶端與服務器之間進行簡單文件傳輸的協議 特點&#xff1a; 1,簡單 2…

gn fast-gn_GN的完整形式是什么?

gn fast-gnGN&#xff1a;晚安 (GN: Good Night) GN is an abbreviation of "Good Night". GN是“ Good Night”的縮寫 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo Messenge…

從零開始編寫自己的C#框架(27)——什么是開發框架

前言 做為一個程序員&#xff0c;在開發的過程中會發現&#xff0c;有框架同無框架&#xff0c;做起事來是完全不同的概念&#xff0c;關系到開發的效率、程序的健壯、性能、團隊協作、后續功能維護、擴展......等方方面面的事情。很多朋友在學習搭建自己的框架&#xff0c;很多…

[轉載] Python 遞歸 深入理解遞歸 Python遞歸剖析,絕對讓你看懂!

參考鏈接&#xff1a; Python | print()中的結束參數 目錄 遞歸剖析 遞歸的兩個過程 return 返回值 詳解 遞歸思路二分法和遞歸尾遞歸遞歸練習題 遞歸剖析 遞歸真的很重要&#xff0c;之前學的時候&#xff0c;學的一知半解&#xff0c;以為真正了解&#xff0c;每次想到遞歸…

laravel 項目遷移_在Laravel遷移

laravel 項目遷移Before moving forward we need to know some facts about it, 在繼續前進之前&#xff0c;我們需要了解一些事實&#xff0c; Resources: In these directories, we have already a js, lang, sass and view page. Where, sass and js file holf their uncom…

Python之list對應元素求和

本次分享將講述如何在Python中對多個list的對應元素求和&#xff0c;前提是每個list的長度一樣。比如&#xff1a;a[1,2,3], b[2,3,4], c[3,4,5], 對a,b,c的對應元素求和&#xff0c;輸出應為[6,9,12].    方法一&#xff1a;   直接求解&#xff0c;按照對應元素相加的…

[轉載] Python中str跟int的轉換

參考鏈接&#xff1a; Python中的類型轉換 字符串str轉換成int: int_value int(str_value) int轉換成字符串str: str_value str(int_value) a100 b666 #int轉str類型 print(int轉str類型) print(int轉str&#xff1a; str(a)) #str轉int類型 print(str轉int類型…

ot協議是什么_OT的完整形式是什么?

ot協議是什么OT&#xff1a;主題外 (OT: Off Topic) OT is an abbreviation of "Off Topic". OT是“ Off Topic”的縮寫 。 It is an expression, which is commonly used in Gmail or messaging platform. It shows that the email that has been sent is irrelev…

[轉載] python中字符串編碼形式及其所占字節

參考鏈接&#xff1a; Python中的字節對象與字符串 1.常見字符串編碼錯誤 在使用Python讀文件時經常遇到編碼問題引起的錯誤&#xff0c;比如&#xff1a; UnicodeDecodeError: gbk codec cant decode byte 0x80 in position 30: illegal multibyte sequence 遇到這種異…

[AtCoder-ARC073F]Many Moves

題目大意&#xff1a;   有一排n個格子和2枚硬幣。   現在有q次任務&#xff0c;每一次要你把其中一枚硬幣移到x的位置上&#xff0c;移動1格的代價是1。   兩枚硬幣不能同時移動&#xff0c;任務必須按次序完成。   現在告訴你兩枚硬幣初始狀態所在的位置a和b&#xf…

ScalavsKotlin

Is Scala better that Kotlin? No..., Is Kotlin better than Scala? No... Scala比Kotlin更好嗎&#xff1f; 不...&#xff0c;Kotlin勝過Scala嗎&#xff1f; 沒有... Both programming languages have their own profits and are for a specific set of development. It…

工業智能相機與基于PC的機器視覺的區別比較

隨著科技的日漸成熟&#xff0c;機器視覺得到了飛速發展。由于嵌入式技術的發展,近幾年智能相機性能顯著提高&#xff0c;越來越多必須依賴于PC處理的應用開始向智能相機平臺傾斜。低成本、高可靠性及易于安裝維護等優勢&#xff0c;使得機器視覺在制造業上的規模性應用越來越普…

[轉載] python skimage在圖像處理中的用法

參考鏈接&#xff1a; 在Python中打印單變量和多變量 基于python腳本語言開發的數字圖片處理包&#xff0c;比如PIL,Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基礎的數字圖像處理&#xff0c;功能有限&#xff1b;opencv實際上是一個c庫&#xff0c;只是提供了py…

scala元組 數組_Scala中的數組

scala元組 數組Scala中的數組 (Arrays in Scala) An array is a linear data structure with a fixed number of elements. It is a collection that stores a fixed number Arrays in Scalf elements of the same datatype. In Scala, an array is 0 indexed, i.e. the first …

OpenStack —— DevStack一鍵自動化安裝

一、DevStack介紹Devstack目前是支持Ubuntu16.04和CentOS 7&#xff0c;而且Devstack官方建議使用Ubuntu16.04&#xff0c;所以我們使用Ubuntu 16.04進行安裝。默認無論是Devstack和OpenStack&#xff0c;都是采用Master的代碼進行安裝&#xff0c;這樣經常會出現&#xff0c;今…