天天看點

Python基礎之:數字字元串和清單簡介數字字元串字元串對象str清單

簡介

Python的主要應用是進行科學計算,科學計算的基礎就是數字,字元串和清單。本文将會詳細的給大家介紹一下這三個資料類型的使用情況。

數字

數字是任何科學計算中非常中要的類型,在Python中最常見的數字類型就是int和float。

看幾個基本的數字操作:

In [8]: 1+1
Out[8]: 2

In [9]: 3*2 + 10
Out[9]: 16

In [10]: (65 + 23) / 4
Out[10]: 22.0           

上面我們可以看到,沒有小數的是int類型,帶有小數的是float類型。

除法運算 (

/

) 永遠傳回浮點數類型。如果要做 floor division得到一個整數結果(忽略小數部分)你可以使用

//

運算符;如果要計算餘數,可以使用

%

In [11]: 54 / 4
Out[11]: 13.5

In [12]: 54 // 4
Out[12]: 13

In [13]: 54 % 4
Out[13]: 2           

** 可以表示乘方運算:

In [14]: 4 ** 3
Out[14]: 64           

我們可以将數字的運算指派給特定的變量,并且可以使用該變量進行後續的運算。

In [15]: a = 12

In [16]: b = 14

In [17]: a * b
Out[17]: 168           

在互動式環境中,_表示上一個輸出:

In [17]: a * b
Out[17]: 168

In [18]: 100 + _
Out[18]: 268           

除了int和float,Python還支援其他的資料類型,比如Decimal和Fraction,甚至還支援複數。

字元串

Python中字元串有三種表示形式,可以使用單引号,雙引号和三引号來表示。

In [19]: site1 = 'www.flydean.com'

In [20]: site2= "www.flydean.com"

In [21]: site3= """www.flydean.com"""           

三引号主要用于跨行輸出,字元串中的回車換行會自動包含到字元串中,如果不想包含,在行尾添加一個

\

即可。如下:

print("""\
Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
""")           

如果需要轉義的話,可以使用反斜杠 \

In [22]: site4 = "www.\"flydean\".com"

In [23]: site4
Out[23]: 'www."flydean".com'           

如果你不希望前置了

\

的字元轉義成特殊字元,可以使用 原始字元串 方式,在引号前添加

r

即可:

In [24]: print(r"www.\"flydean\".com")
www.\"flydean\".com           

字元串通過 + 來進行連接配接,也可以使用 * 來進行複制:

In [25]: "www" + "flydean.com"
Out[25]: 'wwwflydean.com'

In [26]: "www.flydean.com" * 3
Out[26]: 'www.flydean.comwww.flydean.comwww.flydean.com'           

相鄰的兩個或多個 字元串字面值 (引号引起來的字元)将會自動連接配接到一起.

In [27]: "www" "flydean.com"
Out[27]: 'wwwflydean.com'           
注意,上面的自動連接配接操作,隻能對兩個字面量有效,如果是變量的話則會報錯。

字元串會被看做是由字元組成的數組,是以可以通過string[index]的形式來進行通路。

In [28]: site5 = "www.flydean.com"

In [29]: site5[3]
Out[29]: '.'           

如果索引是負數的話,會從右邊開始計數:

In [30]: site5[-3]
Out[30]: 'c'           

因為-0 和 0 是一樣的,是以負數是從 -1 開始的。

除了索引,字元串還支援 切片。索引可以得到單個字元,而 切片 可以擷取子字元串:

In [31]: site5[1:5]
Out[31]: 'ww.f'           

注意切片的開始總是被包括在結果中,而結束不被包括。這使得

s[:i] + s[i:]

總是等于

s

In [33]: site5[:4]+site5[4:]
Out[33]: 'www.flydean.com'           

切片的索引有預設值,省略開始索引時預設為0。

如果索引超出了字元串的範圍就會發送越界錯誤。

In [34]: site5[100]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-34-fc1f475f725b> in <module>()
----> 1 site5[100]

IndexError: string index out of range           

但是,切片中的越界索引會被自動處理:

In [36]: site5[:100]
Out[36]: 'www.flydean.com'           

因為字元串是不可變的,是以我們不能通過索引的形式來對字元串進行修改:

In [37]: site[2] = "A"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-37-9147d44bd80c> in <module>()
----> 1 site[2] = "A"

TypeError: 'str' object does not support item assignment           

len用來統計字元串的長度:

In [38]: len(site5)
Out[38]: 15           

字元串對象str

字元串的本質是字元串對象str。

可以看下str的基本方法:

In [39]: site5.
           capitalize()   encode()       format()       isalpha()      islower()      istitle()      lower()        replace()      rpartition()   splitlines()   title()
           casefold()     endswith()     format_map()   isdecimal()    isnumeric()    isupper()      lstrip()       rfind()        rsplit()       startswith()   translate()
           center()       expandtabs()   index()        isdigit()      isprintable()  join()         maketrans()    rindex()       rstrip()       strip()        upper()
           count()        find()         isalnum()      isidentifier() isspace()      ljust()        partition()    rjust()        split()        swapcase()     zfill()           

感興趣的同學可以自行去研究。

清單

清單是用方括号表示的資料的集合。清單中的資料可以是多種資料類型,但是一般情況下,我們在一個清單中使用同一個資料類型。

In [40]: ages = [ 10, 14, 18, 20 ,25]

In [41]: ages
Out[41]: [10, 14, 18, 20, 25]           

和字元串一樣,清單也支援索引和切片。事實上,隻要是

sequence

類型的資料類型,都支援索引和切片。

In [42]: ages[3]
Out[42]: 20

In [43]: ages[:2]
Out[43]: [10, 14]

In [44]: ages[:]
Out[44]: [10, 14, 18, 20, 25]           
注意,清單的切片會傳回一個新的清單。但是這個新的清單是淺拷貝,意味着新清單的元素是原清單中元素的引用。

清單還支援拼接操作:

In [45]: ages + [9, 11]
Out[45]: [10, 14, 18, 20, 25, 9, 11]           

和String的不可變性不同,清單是可變的,這就意味着我們可以通過索引來修改清單的值:

In [46]: ages[0] = 100

In [47]: ages
Out[47]: [100, 14, 18, 20, 25]           

清單的底層類型是list,我們可以看下list中的方法:

In [51]: ages.
               append()  count()   insert()  reverse()
               clear()   extend()  pop()     sort()
               copy()    index()   remove()           

我們可以使用append來附加list的值,也可以使用count來統計list的元素個數等等。

上面我們提到了,清單的切片是原清單的引用,是以我們可以通過給切片指派,來修改原始清單的值:

>>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> letters
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> # replace some values
>>> letters[2:5] = ['C', 'D', 'E']
>>> letters
['a', 'b', 'C', 'D', 'E', 'f', 'g']
>>> # now remove them
>>> letters[2:5] = []
>>> letters
['a', 'b', 'f', 'g']
>>> # clear the list by replacing all the elements with an empty list
>>> letters[:] = []
>>> letters
[]           

清單還可以進行嵌套,建構多層的清單:

>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'           
本文已收錄于 http://www.flydean.com/03-python-number-list-string/

最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現!

歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!