python學習小結

來源:互聯網
上載者:User

python具有非常豐富的資料類型,
包括字串,列表,元組,字典集合等,每種資料類型的特點都大一樣,好好利用他們
可以讓你的python編程變的非常輕鬆,要好好利用就應該充分瞭解他們的特點,下面對他們的特點進行一些總結。

 

python字串:
字串在python中是一個單個字元的字串的序列,可以對字串進行切片串連等相關操作。
下面是關於python字串的一些文章:
python 字串替換
python字串串連

python列表
列表是一個任意資料類型組成的有序集合,有點像其它語言的數組,如果用過其它語言的朋友相信對它不會陌生,列表的操作非常
豐富,可以用dir來查看他內建的方法。
下面是關於python列表的一些文章:
python列表
python列表操作方法

python元組
python元組和列表一樣都是有序序列,所不同的是元組是不可變的類型,經常用在系統設定檔裡,作為系統的配置資訊,比較安全和穩定,不容易輕易被改變。
下面是python元組的一些文章:
python 元組

python字典
字典是python對象中唯一的映射的類型,和數學的映射的關係差不多,其它的語言也有大概的資料類型,內建的方法也很多
下面是python字典的一些文章:
python 字典:
python 字典 添加

python集合
python集合在其它的語言好像比較少見,做一些中間處理還是非常好的
下面是python集合的一些文章:
python 集合

下面是一些朋友總結的。

共同點:
1、它們都是py的核心類型,是py語言自身的一部分。

核心類型與非核心類型
多數核心類型可通過特定文法來產生其對象,比如"spam"就是建立字串類型的對象的運算式;
非核心類型需要內建函數來建立,比如檔案類型需要調用內建函數open()來建立。
類也可以理解成自訂的非核心類型。

2、邊界檢查都不允許越界索引

3、索引方法都使用[]
s = 'spam'
print s[0]
s = ['s', 'p', 'a', 'm']
print s[0]
s = {'name':'bob', 'age':'12'}
print s['name']
s = ('s', 'p', 'a', 'm')
print s[0]

4大部分都支援迭代的協議

不同點:
1、有序性
字串、列表、元組是序列,元組可以理解成不可變的列表
字典是映射
序列才有有序性,字典沒有可靠的左右順序

2、可變性
字串、元組(還有數字)具有不可變性,即賦值後對應儲存空間的內容不可變,除非這個對象被銷毀。
列表、字典具有可變性

s = 'spam'
s = 'z' + s[1:]

第一行的s的指向的記憶體空間(比如地址0x000123)儲存了字串'spam'
第二行的s“變”成了'zpam',但它只是重新指向了一個儲存著'zpam'字串的記憶體位址,原來0x000123出開始的記憶體空間可能還是一個'spam',直到系統來清理它。

3、序列操作
序列(字串、列表、元祖)支援,映射(字典)不支援
注意:序列操作產生的類型不變。

col = 'spam'
print col[1:]
#結果是pam

col = ['s', 'p', 'a', 'm']
print col[1:]
#結果是['p', 'a', 'm']

col = ('s', 'p', 'a', 'm')
print col[1:]
#結果是('p', 'a', 'm')

4、列表解析運算式
運算式中支援序列(字串、列表、元祖),貌似也支援映射(字典)。
注意:和序列操作不同的是,
列表解析運算式產生的只能是一個列表;
double = [c * 2 for c in 'spam']
print double
結果為['ss', 'pp', 'aa', 'mm']

L1 = [1, 2, 3]
L2 = [4, 5, 6]
L3 = [(a + b) for (a,b) in zip(L1, L2)]
print L3
#結果為[5, 7, 9]

tup = (1, 2, 3)
double = [c * 2 for c in tup]
print double
#結果為[2, 4, 6]

a = {'a':'zw','b':'ww'}
b = [i * 2 for i in a.items()]
print b
#結果為[('a','zw','a','zw'),('b','ww','b','ww')]

下面一段代碼似乎是列表解析運算式對字典的支援,對字典進行的迭代應該是對其keys的迭代,字典的items()、keys()、values()方法都是返回的列表,所以,這裡的for i in a最好寫成for i ina.keys(),效果等同。總之,可以不追究列表解析運算式到底支不支援字典,本質上,列表解析運算式就是個對列表使用了迴圈結構,並產生新的列表的方法。先這樣理解

a = {'a':'zw','b':'ww'}
b = [i * 2 for i in a]
print b
#結果為['aa', 'bb']

複製代碼
5、嵌套
除了字串,列表、元組、字典可以相互多層次嵌套

#第一段
b = [1, 2, 3]
tup = (4, 5, b)
print tup[2]
#結果是[1, 2, 3]
b[0] = 'x'
print tup[2]
#結果是['x', 2, 3]

#第二段
b = '123'
tup = (4, 5, b)
print tup[2]
#結果是'123'
b = 'xxx'
print tup[2]
#結果仍然是'123'

有上面兩段可以看出,嵌套與可變性是不衝突的。
tup = (4, 5, b)中所記憶、錄入的b是個變數指標,或者叫記憶體位址,是個數字。
第一段,b指向一個列表,列表具有可變性,所以b[0] = 'x'的操作後,所以對元祖的索引能體現出變化;
第二段,b指向一個字串,字串具有不可變性,所以b = 'xxx'的操作後,b這個指標本身就改變了,重指向另一段記憶體空間,而tup元組中記憶的記憶體位址(那個曾經的b)所指空間並沒有變,還是字串'123'。
所以,不管是第一段還是第二段,元組tup始終保持不可變性,要變化也是其元素作為指標所指向記憶體的變化。

總結:python資料類型最重要的就是理解好可變性和不可變性,相信理解好了可以減少很多錯誤和少走一些彎路!

作者:老王@python python教程
老王python,提供pythn相關的python教程和python下載,希望大家能夠喜歡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.