日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python数据结构与算法--数据类型

發布時間:2024/4/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python数据结构与算法--数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從數據類型開始

Python支持面向對象的編程范式,這意味著Python把數據看成解決問題的關鍵. 在Python中,類似其他的面向對象的編程語言, 我們定義一個類,用來描述數據是什么?(狀態) 和數據能做些什么 (行為). 類和抽象數據類型相似,因為一個類的用戶只看數據項的狀態和行為. 數據項在面向對象編程中被稱為對象. 對象是類的實例.

本文地址:http://www.cnblogs.com/archimedes/p/python-datastruct-algorithm-basedatatypes.html,轉載請注明源地址。

內置的原子數據類型

我們從原子數據類型開始我們的回顧. Python有兩種主要的內建數據類:int和float. 標準的算術操作:+, -, *, /, and ** (冪運算), 可以使用括號改變運算優先級.其他非常有用的操作符為取余運算%, 和整數除法運算//. 注意:當兩個整數相除的時候,結果是一個浮點型數. 整數除法操作返回截斷小數之后的整數部分.

>>> print 2+3*4 14 >>> print (2+3)*4 20 >>> print 2**10 1024 >>> print 6/3 2 >>> print 7/3 2 >>> print 7//3 2 >>> print 7%3 1 >>> print 3/6 0 >>> print 3//6 0 >>> print 3%6 3 >>> print 2**100 1267650600228229401496703205376

boolean類型,由Python的?bool?類提供實現,在表示真值的時候非常有用. 對于一個boolean對象而言,只有兩個值:True?and?False,標準的boolean類型操作:?and,?or, 和not.

>>> True True >>> False False >>> False or True True >>> not (False or True) False >>> True and True True

Boolean數據對象也被用于表示比較運算符的結果,比如:相等 (==) 和大于 (>). 另外, 關系運算符和邏輯運算符可以組合在一起來解決復雜的邏輯問題.?表1 展示了邏輯關系操作,后面還展示了相關的例子.

表1 : 邏輯與關系操作? ? ? 操作名 ? ? ??操作符說明
小于<小于操作符
大于>大于操作符
小于等于<=小于等于操作符
大于等于>=大于等于操作符
等于==等于操作符
不等于!=不等于操作符
邏輯與and兩個同時為True時候才為True
邏輯或or兩個中至少有一個為True,結果為True
邏輯非not否定, False 變為True, True 變為False

示例代碼:

>>> print(5==10) False >>> print(10 > 5) True >>> print((5 >= 1) and (5 <= 10)) True

標識符以名字的形式被用于程序語言. 在Python中, 標識符以字母或一條下劃線開始,大小寫敏感且可以是任意長度.記住經常使用變量來表達你的意思,使得你的代碼更加簡單的被閱讀和理解.一個 Python 變量被創建一旦被賦予左值. 賦值語句提供了一種聯系變量和值的方法. 變量保持一個指向數據區域的引用,并不是數據本身. 看下面的代碼:

>>> theSum = 0 >>> theSum 0 >>> theSum += 1 >>> theSum 1 >>> theSum = True >>> theSum True

內建集合數據類型

作為數據類型和布爾類型的補充, Python還有一些內建的集合類型. Lists, strings, 和 tuples(元組)都是有序集合,非常類似普通的結構但是有些特殊的不同點,所以必須理解它們這樣才能正確地使用它們. Sets 和 dictionaries 是無序集合.

list?是一個空的或多個指向Python數據對象類型的引用. Lists 通常寫為用方括號包含的一些用逗號分隔的值. 空表表示為?[ ]. Lists內部的元素可以是不同的數據對象, ?下面的例子展示了一個list中不同的數據類型.

>>> [1,3,True,6.5] [1, 3, True, 6.5] >>> myList = [1,3,True,6.5] >>> myList [1, 3, True, 6.5]

當給list賦值的時候, list被返回. 但是, 想在 list上作操, 就需要將其賦值給一個對象.

lists 被認為是連續的序列, 它們支持一些可用于其他序列的通用操作. 表2?展示了這些操作,接著給出一些例子來進一步說明它們的應用.

表 2: Python中序列的通用操作操作名操作符? ? ? ? ? ? ? 解釋 ? ? ? ? ? ? ? ?
索引[ ]訪問 sequence中的元素
連接+合并sequences
重復*連續重復次數
成員in判斷元素是否在quence中
長度len計算sequence的長度
分片[ : ]給sequence分片

注意到lists (序列)的索引從0開始. 取片操作, myList[1:3], 返回list的數據項,起始于1結束但不包含3.有時, 你想初始化一個list. 可以使用重復來快速的完成. 例如,

>>> myList = [0]*6 >>> myList [0, 0, 0, 0, 0, 0]

通過下面的例子很容易理解:

>>> myList = [1,2,3,4] >>> A=[myList]*3 >>> print(A) [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] >>> myList[2]=45 >>> print(A) [[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]

Lists 提供大量用于構建數據結構的方法.表3?提供概要. 接著是一些例子.

表 3: Python中list提供的方法方法名應用說明
appendalist.append(item)在list的結尾添加一個項
insertalist.insert(i,item)在list的第i個位置插入一個項
popalist.pop()移除并返回list中的最后一個元素
popalist.pop(i)移除并返回list中的第i個位置的元素
sortalist.sort()排序修改list
reversealist.reverse()將list倒序操作
deldel alist[i]刪除第i個位置的元素
indexalist.index(item)返回第一次出現?item 的索引
countalist.count(item)返回出現?item?的次數
removealist.remove(item)刪除第一次出現的?item?

list中的方法示例代碼:

>>> myList = [1024, 3, True, 6.5] >>> myList.append(False) >>> print(myList) [1024, 3, True, 6.5, False] >>> myList.insert(2, 4.5) >>> print(myList) [1024, 3, 4.5, True, 6.5, False] >>> print(myList.pop()) False >>> print(myList) [1024, 3, 4.5, True, 6.5] >>> print(myList.pop(1)) 3 >>> print(myList) [1024, 4.5, True, 6.5] >>> myList.pop(2) True >>> print(myList) [1024, 4.5, 6.5] >>> myList.sort() >>> print(myList) [4.5, 6.5, 1024] >>> myList.reverse() >>> print(myList) [1024, 6.5, 4.5] >>> print(myList.count(6.5)) 1 >>> print(myList.index(4.5)) 2 >>> myList.remove(6.5) >>> print(myList) [1024, 4.5] >>> del myList[0] >>> print(myList) [4.5]

即使像整型這樣的對象也可以調用方法如下:

>>> (54).__add__(21) 75

上面的代碼中我們使整型對象?54?執行?add?方法(稱為?__add__?) 并且傳遞?21?作為被加數. 結果是它們的和,?75. 當然, 我們通常寫作?54+21. 在后面還將詳細介紹這個方法.

一個Python經常用來連接lists的常見函數:?range?函數.range?產生了一個范圍內的對象. 通過使用?list?函數, 可以看到list中指定范圍內的值,如下面的代碼所示:

>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(0, 10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(5,10) [5, 6, 7, 8, 9] >>> list(range(5,10)) [5, 6, 7, 8, 9] >>> list(range(5,10,2)) [5, 7, 9] >>> list(range(10,1,-1)) [10, 9, 8, 7, 6, 5, 4, 3, 2]

Strings?包含0個或多個數字或其他的字符的連續的順序集合. 我們稱這些為字母, 數字和其他的符號字符.?

>>> "David" 'David' >>> myName = "David" >>> myName[3] 'i' >>> myName * 2 'DavidDavid' >>> len(myName) 5

既然strings是序列, all of the 上面提到的序列的所有操作都可以使用. 然而, strings 還有一些自身的方法, 如表?4所示. 例如,

>>> myName 'David' >>> myName.upper() 'DAVID' >>> myName.center(10) ' David ' >>> myName.find('v') 2 >>> myName.split('v') ['Da', 'id'] 表 4: Python中Strings 提供的方法方法名應用說明
centerastring.center(w)返回一個以?w?為寬度的居中字符串
countastring.count(item)返回字符串中包含?item?的個數
ljustastring.ljust(w)返回一個以?w?為寬度的左對齊字符串
lowerastring.lower()返回string的小寫形式
rjustastring.rjust(w)返回一個以?w?為寬度的右對齊字符串?
findastring.find(item)返回第一次出現?item?的索引
splitastring.split(schar)將string以?schar為分隔符劃分為子串

lists 和 strings的主要區別是 lists 可以修改但是 strings 不能修改. 例如, 你可以通過索引和賦值改變項的值. 對于string不能發生改變.

>>> myList = [1,3,True,6.5] >>> myList[0] = 2 ** 10 >>> myList [1024, 3, True, 6.5] >>> myName = 'David' >>> myName[0] = 'X' Traceback (most recent call last):File "<pyshell#81>", line 1, in <module>myName[0] = 'X' TypeError: 'str' object does not support item assignment

Tuples(元組)非常類似于lists,因為它們的元素都可以是不同類型的.不同的是tuple是不可以變的, 就像 string. Tuples是一組用圓括號包圍的用逗號分隔的值. 作為序列,你可以使用上面介紹的所有方法. 例如:

>>> myTuple = (2, True, 4.32) >>> myTuple (2, True, 4.32) >>> len(myTuple) 3 >>> myTuple[0] 2 >>> myTuple * 3 (2, True, 4.32, 2, True, 4.32, 2, True, 4.32) >>> myTuple[0:2] (2, True)

然而,假如你試圖修改元組中的元素,就會出錯,如下所示.

>>> myTuple[1] = false Traceback (most recent call last):File "<pyshell#92>", line 1, in <module>myTuple[1] = false NameError: name 'false' is not defined

set 是一個包含0個或多個不可變Python對象的無序集合. ?空set 表示為?set(). Sets 的元素類型多樣.

>>> {3,6,"cat",4.3,False} set([False, 3, 4.3, 6, 'cat']) >>> mySet = {3,6,"cat",4.3,False} >>> mySet set([False, 3, 4.3, 6, 'cat']) 表 5: Python中的Set操作操作名操作說明
成員in判斷成員
長度len返回set中的元素個數
|aset | otherset返回一個新的set,作為并集
&aset & otherset返回一個新的set,作為交集
-aset - otherset返回一個新的set,作為差集
<=aset <= otherset判斷第一個集合是否為第二個集合的子集
>>> {3,6,"cat",4.3,False} set([False, 3, 4.3, 6, 'cat']) >>> mySet = {3,6,"cat",4.3,False} >>> mySet set([False, 3, 4.3, 6, 'cat']) >>> >>> mySet = {3,6,"cat",4.3,False} >>> len(mySet) 5 >>> False in mySet True >>> "dog" in mySet False >>> yourSet = {3,1,"cat",4.7,False} >>> mySet | yourSet set([False, 1, 3, 6, 4.3, 'cat', 4.7]) >>> mySet & yourSet set([False, 3, 'cat']) >>> mySet - yourSet set([4.3, 6]) >>> mySet <= yourSet False

Sets 提供的方法類似于數學中的集合. 表?6?提供了概要. 例子如下所示:

表 6: Python中Sets提供的方法方法名應用說明
unionaset.union(otherset)返回一個新的set,元素由兩個set的并集組成
intersectionaset.intersection(otherset)返回一個新的set ,元素由兩個set的交集組成
differenceaset.difference(otherset)返回一個新的set,元素由兩個set的差組成
issubsetaset.issubset(otherset)判斷第一個set中的所有元素是不是在第二個set中
addaset.add(item)向set中添加元素
removeaset.remove(item)從set中刪除元素
popaset.pop()從set中刪除任意元素
clearaset.clear()將set中所有元素刪除
>>> mySet = {False, 4.5, 3, 6, 'cat'} >>> yourSet = {99, 3, 100} >>> mySet.union(yourSet) set([4.5, False, 3, 100, 6, 'cat', 99]) >>> mySet | yourSet set([4.5, False, 3, 100, 6, 'cat', 99]) >>> mySet.intersection(yourSet) set([3]) >>> mySet & yourSet set([3]) >>> mySet.difference(yourSet) set([4.5, False, 6, 'cat']) >>> mySet - yourSet set([4.5, False, 6, 'cat']) >>> {3, 100}.issubset(yourSet) True >>> {3, 100}<=yourSet True >>> mySet.add("house") >>> mySet set([4.5, False, 3, 6, 'house', 'cat']) >>> mySet.remove(4.5) >>> mySet set([False, 3, 6, 'house', 'cat']) >>> mySet.pop() False >>> mySet set([3, 6, 'house', 'cat']) >>> mySet.clear() >>> mySet set([])

Dictionaries(字典)既有方法又有操作.?表7?和 表?8?描述了它們.?

表 7: Python中Dictionaries 提供的操作操作符應用說明
[]myDict[k]返回鍵為?k 的值,否則發生錯誤
inkey in adict當key在字典中的時候返回?True?否則返回?False?
deldel?adict[key]刪除所有的 dictionary 元素
>>> phoneext = {'david':1410, 'brad':1137} >>> phoneext {'brad': 1137, 'david': 1410} >>> phoneext.keys() ['brad', 'david'] >>> phoneext.values() [1137, 1410] >>> phoneext.items() [('brad', 1137), ('david', 1410)] >>> phoneext.get("kent") 表 8: Python中Dictionaries 提供的方法方法名應用說明
keysadict.keys()返回dictionary中的key
valuesadict.values()返回dictionary中的值
itemsadict.items()返回字典中的所有鍵-值對
getadict.get(k)返回?k?對應的值,否則返回?None
getadict.get(k,alt)返回?k 對應的值,否則返回?alt

您還可能感興趣:

Python基礎(11)--面向對象1

Python基礎(10)--數字?

Python基礎(9)--正則表達式

Python基礎(8)--文件

Python基礎(7)--函數

Python基礎(6)--條件、循環?

Python基礎(5)--字典

Python基礎(4)--字符串

Python基礎(3)--列表和元組

Python基礎(2)--對象類型?

Python基礎(1)--Python編程習慣與特點

?

總結

以上是生活随笔為你收集整理的Python数据结构与算法--数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。