Python基本數據類型


一、簡介

Python基本數據類型一般分為:數字、字符串、列表、元組、字典、集合這六種基本數據類型

其中數字又包含整型(整型又包括標准整型、長整型(Python2.7及之前版本有))、浮點型、復數類型、布爾型(布爾型就是只有兩個值的整型)、這幾種數字類型。列表、元組、字符串都是序列。

二、各種數據類型詳解

2.1、數字

數字類型是不可更改的對象。對變量改變數字值就是生成/創建新的對象。Python支持多種數字類型:

整型(標准整型和長整型(Python2.7及之前的有這種類型))、布爾型、雙精度浮點型、十進制浮點型、復數。

  • 標准整型

    int,標准整型,在大多數32位機器上標准整型取值范圍是-2^31到2^31-1,也就是-2147483648~2147483647,如果在64位機器使用64位編譯器,那么這個系統的標准整型將是64位。

    Python2.7代碼:

    >>> 2**63-1
    9223372036854775807L
    >>> -2**63
    -9223372036854775808L
    >>> 9223372036854775807
    9223372036854775807
    >>> 9223372036854775808
    9223372036854775808L
    >>> -9223372036854775808
    -9223372036854775808
    >>> -9223372036854775809
    -9223372036854775809L
  • 長整型

    long,長整型包含的最大值數字大小由內存決定。長整型及數字末尾加個L(大寫小寫均可)。Python3中已經取消了標准整型和長整型的區分,都是整型。

    Python2.7代碼:

    >>> a = 123L
    >>> type(a)
    <type 'long'>
    >>> a
    123L

    Python3.6代碼:

    >>> a = 111111111111111111111111111111
    >>> type(a)
    <class 'int'>
    >>> a
    111111111111111111111111111111
  • 布爾型

    bool,從Python2.3開始Python中添加了布爾類型。布爾類型有兩種True和False。對於沒有__nozero__方法的對象默認是True。

    對於值為0的數字、空集(空列表、空元組、空字典等)在Python中的布爾類型中都是False。

    >>> bool(1)
    True
    >>> bool('a')
    True
    >>> bool(0)
    False
    >>> bool('')
    False

     

  • 浮點型

    float,每個浮點型占8個字節(64位),完全遵守IEEE754號規范(52M/11E/1S),其中52個位用於表示底,11個位用於表示指數(可表示的范圍大約是±10**308.25),剩下的一個位表示符號。這看上去相當完美,然而,實際精度依賴於機器架構和創建Python解釋器的編譯器。

    浮點型值通常都有一個小數點和一個可選的后綴e(大寫或小寫,表示科學計數法)。在e和指數之間可以用正(+)或負(-)表示指數的正負(正數的話可以省略符號)。

    以上是Python核心編程的對浮點型(雙精度浮點型)的說明。經過Python實測浮點型默認長度是24字節如果超出這個范圍會自動

    以下時Python3.6測試過程:

    >>> import sys
    >>> a = 1.1
    >>> sys.getsizeof(a)
    24
    >>> a = 4.4e25
    >>> type(a)
    <class 'float'>
    >>> a = 10**308.25
    >>> a
    1.7782794100389228e+308
    >>> sys.getsizeof(a)
    24
    >>> a = 10**308.25+1
    >>> sys.getsizeof(a)
    24>>> a = float(10)
    >>> a
    10.0
    >>> type(a)
    <class 'float'>
  • 復數類型

    complex,在復數中虛數不能單獨存在,它們總是和一個值為0.0的實數部分一起來構成一個復數。
    復數由實數部分和虛數部分構成。
    表示虛數的語法:real+imagj。
    實數部分和虛數部分都是浮點型。
    虛數部分必須有后綴j或J。

    >>> a = 1+1j
    >>> a
    (1+1j)
    >>> type(a)
    <class 'complex'>
    >>> import sys
    >>> sys.getsizeof(a)
    32
    >>> a = complex(2.2)
    >>> a
    (2.2+0j)
    >>> sys.getsizeof(a)
    32

2.2、字符串

字符串(string)是不可變類型,就是說改變一個字符串的元素需要新建一個新的字符串。字符串是由獨立的字符組成的,並且這些字符可以通過切片操作順序地訪問。Python里面通過在引號間包含字符的方式創建字符串,單引號和雙引號的作用是相同的。
Python用“原始字符串”操作符來創建直接量字符串,所以再做區分就沒什么意義了。其他的語言,比如C語言里面用單引號來標示字符,雙引號標示字符串,而在Python里面沒有字符這個類型。這可能是雙引號和單引號在Python里面被視作一樣的另一個原因。
Python實際上有三類字符串。通常意義的字符串(str) 和Unicode字符串(unicode) 實際上都是抽象類basestring的子類。這個basestring是不能實例化的。

以下時Python3.6代碼:

>>> a = 'abc'
>>> a
'abc'
>>> a = "cba"
>>> a
'cba'
>>> type(a)
<class 'str'>
>>> import sys
>>> sys.getsizeof(a)
52
>>> len(a)
3
>>> a[1]
'b'
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

2.3、列表

列表(list)像字符串類型一樣,列表類型也是序列式的數據類型。字符串只能由字符組成,而且是不可變的(不能單獨改變它的某個值),而列表則是能保留任意數目的Python對象的靈活的容器。
列表不僅可以包含Python的標准類型,而且可以用用戶定義的對象作為自己的元素。列表可以包含不同類型的對象,而且要比C或者Python自己的數組類型(包含在array擴展包中)都要靈活,因為數組類型所有的元素只能是一種類型。列表可以執行pop,sort、reverse等操作。列表也可以添加或者減少元素,還可以跟其他的列表結合或者把一個列表分成幾個。可以對單獨一個元素或者多個元素執行insert、update或remove操作

下面是Python3.6代碼:

>>> li = [1,'12','abc',['a','123',1]]
>>> li
[1, '12', 'abc', ['a', '123', 1]]
>>> type(li)
<class 'list'>
>>> a = list('abcde')
>>> a
['a', 'b', 'c', 'd', 'e']
>>> a.pop()
'e'
>>> a
['a', 'b', 'c', 'd']
>>> a.reverse()
>>> a
['d', 'c', 'b', 'a']

2.4、元組

元組類型在很多操作上都跟列表一樣,許多用在列表上的例子在元組上照樣能跑,我們有一節內容專門講解元組類型。它們的主要不同在於元組是不可變的,或者說是只讀的,所以那些用於更新列表的操作,比如用切片操作來更新一部分元素的操作,就不能用於元組類型。

以下是Python3.6代碼:

CPython>>> a = ('a','123',['a',123])
>>> a
('a', '123', ['a', 123])
>>> type(a)
<class 'tuple'>
>>> tu = tuple('abcde')
>>> tu
('a', 'b', 'c', 'd', 'e')

2.5、字典

字典是Python語言中唯一的映射類型。映射類型對象里哈希值(鍵,key) 和指向的對象
(值。value) 是一對多的關系。一個字典對象是可變的,它是一個容器類型,能存儲任意個數
的Python對象,其中也包括其他容器類型。字典類型和序列類型容器類(列表、元組) 的區
別是存儲和訪問數據的方式不同。序列類型只用數字類型的鍵(從序列的開始起按數值順序
索引) 。映射類型可以用其他對象類型做鍵,一般最常見的是用字符串做鍵。和序列類型的
鍵不同,映像類型的鍵直接或間接地和存儲的數據值相關聯。但因為在映射類型中,我們不
再用“序列化排序”的鍵,所以映像類型中的數據是無序排列的
映射類型不要求用數字值做索引以從一個容器中
獲取對應的數據項。你可以用鍵直接“映射”到值,這就是為什么叫映射類型(“mapping
type”) 的原因。映射類型通常被稱做哈希表,是因為字典對象就是哈希類型的。字典是
Python中最強大的數據類型之一。

字典常見的操作有:字典創建、字典賦值、字典中值的訪問、字典更新、字典元素刪除等操作。

C>>> d1 = {}
>>> type(d1)
<class 'dict'>
>>> d1['name']='xiaohong'
>>> d1
{'name': 'xiaohong'}
>>> d1['name']
'xiaohong'
>>> del d1['name']
>>> d1
{}Python

2.6、集合

集合最早出現在Python2.3版本中,通過集合模塊來創建,並通過ImmutableSet類和Set類進行訪問。
集合有兩種不同的類型,可變集合(set)和不可變集合(frozenset)。可變集合,你可以添加和刪除元素,對不可變集合則不允許這樣做。請注意,可變集合不是可哈希的,因此既不能用做字典的鍵也不能做其他集合中的元素。不可變集合則正好相反,即,他們有哈希值,能被用做字典的鍵或是作為集合中的一個成員。集合對象是一組無序排列的可哈希的值。
集合支持用in和not in操作符檢查成員,由len()內建函數得到集合的基數(大小) ,用for循環迭代集合的成員。但是因為集合本身是無序的,你不可以為集合創建索引或執行切片(slice) 操作,也沒有鍵可用來獲取集合中元素的值。

以下時Python3.6代碼:

>>> s1 = set('a')
>>> s1
{'a'}
>>> type(s1)
<class 'set'>
>>> 'a' in s1
True
>>> s1.add('cd')
>>> s1
{'cd', 'a'}
>>> s1.remove('a')
>>> s1
{'cd'}
>>> del s1
>>> s1 = set(['abc'])
>>> s1
{'abc'}
>>> s1 = set('abc')
>>> s1
{'c', 'a', 'b'}
>>> s2 = frozenset(s1)
>>> s2
frozenset({'c', 'a', 'b'})
>>> type(s2)
<class 'frozenset'>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM