python的第五天(複習資料類型)

來源:互聯網
上載者:User

標籤:value   元組   十進位   art   其他   count   odi   back   否則   

對於前幾天資料類型的補充
1、整形int
a.幾種輸入的方法
a = 123
a = int(123)
對於當我們在裝置上輸入a = 123時其實Python內部他們會把他轉換為int(123),對於後面的括弧在Python的內部其實是調用了__init__

b.int的內部最佳化
像下面這種情況他們在記憶體裡是共用一塊地址的:
n1 = 123
n2 = n1
對於下面這種情況他們在記憶體裡使用不同的地址來儲存
n1 = 123
n2 = 123
但是在Python的內部他會把-5----127之間的數做一個最佳化,認為他們是常用的數字,所以在程式中他們還是會使用同記憶體位址來儲存

c.長度的限制
對於作業系統的不同對於int的長度也不同
32bit -2**31-----------2**31-1
64bit -2**63-----------2**63-1
但是對於Python來說如果我們使用的數超過了int的最大數那麼他不會報錯,而是會把轉換為長整形。也就是會在數位後面加上l
長整形的範圍可以說是無限的大,只要你的記憶體越大他就越大可以把記憶體消耗完

2、字串、str

a.建立方式
s1 = "rasir"
s2 = str("rasir")
b.特有功能,一般需要記住的
s1.strip()----------------------------移除字串兩端的空格
s1.startswith()----------------------尋找字串中,關與自己尋找的是否相同
s1.find()-----------------------------尋找字串中某個字元
s1.replace()-------------------------將字串中某個序列替換成自己想要替換的字元
s1.upper()---------------------------將字串的所有字母變成大寫
s1.isapha()---------------------------尋找字串中是否只有字母如果只有字母則返回True否則返回False

c.公用功能
索引:只能取一個元素
切片:可以取多個元素

編碼、for
舉例:
temp = "你好"
for i in temp:
print (i)
bytes_list = bytes(i,encoding=‘utf-8‘)
print(bytes_list)
for i in bytes_list:
print (i)
print(bin(i))
輸出結果:

b‘\xe4\xbd\xa0‘
228
0b11100100
189
0b10111101
160
0b10100000

b‘\xe5\xa5\xbd‘
229
0b11100101
165
0b10100101
189
0b10111101
總結:對於utf-8的編碼來說漢字是以三個位元組來儲存的,並且會以十六進位進行來表現的,而對gbk碼是2個位元組來儲存
對於2.7與3.7版本,在for迴圈輸出漢字的時候,對於2.7的版本是以位元組的形式輸出的,而對於2.7的版本是以字元的形式輸出
從上面的舉例可以看出對於for迴圈的時候會自動把別的進位自動轉換成十進位

d. str與Bytes的轉換
(1)、將字串轉換為位元組
a = ‘小白‘
n1 = bytes(a ,encoding=‘utf-8‘)
n2 = bytes(a ,encoding=‘gbk‘)
print(n1)
print(n2)
輸出結果:
b‘\xe5\xb0\x8f\xe7\x99\xbd‘
b‘\xd0\xa1\xb0\xd7‘

(2)、將位元組轉換成字串
a = ‘小白‘
n1 = bytes(a ,encoding=‘utf-8‘)
n2 = bytes(a ,encoding=‘gbk‘)
new1 = str(n1,encoding="utf-8")
new2 = str(n2 ,encoding=‘gbk‘)
print(new1,new2)
輸出結果:
小白 小白
總結:Bytes可以強制定義建立位元組,也可以用來對其他類型進行轉換到位元組
Str可以強制定義一個字串,也可以用來對其他類型的對象轉換到字串
對於漢子utf-8是以三個位元組來儲存的而GBK是以兩個位元組來儲存的

3、列表:list
a1 = [‘cui‘,‘rain‘,‘sir‘]----------------建立一個列表
a2 = list()-------------------------------建立一個空的列表
a2 = list([‘cui‘,‘rain‘,‘sir‘])
def __init__(self, seq=())---------------------------------------對於轉換的對象要是可迭代(可以這麼理解可迭代的就是可以for迴圈的)

(1)、字串轉換成列表
舉例:
a = ‘小白‘
a1 = list(a)---------------------------這時的a在括弧的內部相當於一個for的迴圈
print(a1)
輸出結果: [‘小‘, ‘白‘]

(2)、將元群組轉換為列表
舉例:
a = (‘cui‘,‘rain‘,‘sir‘)
a1= list(a)----------------------------------------------------for迴圈,將每一個迴圈的元素當做列表的元素
print(a1)
輸出結果:
[‘cui‘, ‘rain‘, ‘sir‘]

(3)、將字典轉換為列表
舉例:
a = {‘rain‘:‘sir‘,
‘yan‘:‘sea‘}
a1 = list(a)
a2 = list(a.values())
a3 = list(a.items())
print(a1)
print(a2)
print(a3)
輸出結果:
[‘rain‘, ‘yan‘]
[‘sir‘, ‘sea‘]
[(‘rain‘, ‘sir‘), (‘yan‘, ‘sea‘)]

a、特別的一些列表的功能
a1.clear()---------------------------------------------------------------------清除列表功能
a1.append()-------------------------------------------------------------------追加某個元素
a1.extend()--------------------------------------------------------------------以迭代的方式追加元素
a1.insert()--------------------------------------------------------------------添加元素,在指定的位置添加元素
a1.reverse()-------------------------------------------------------------------將列表反轉

b、共有的特性
都可以索引--------------------對於索引索引之後一定是個元素
都可以切片--------------------對於切片如果切片之前是字元那麼切片之後也是字元,如果之前是列表那麼之後也是列表
都可以for迴圈

c、嵌套的索引
a1 = [‘rain‘,‘sir‘,‘sea‘,123,{‘aaa‘:‘bbb‘,‘ccc‘:{‘ddd‘:‘eee‘}}]
a2 = a1[4]["ccc"][‘ddd‘]

4、元祖.tuple
a、建立和轉換
a1 = (‘cui‘,‘rain‘,‘sir‘)
a2 = tuple(a1)---------------------------------也是可以迭代的
a3 = tuple((‘cui‘,‘rain‘,‘sir‘))
b、基本特性
count------------------------------------------------統計有多少個元素
index------------------------------------------------尋找查個元素並返位置
c、元素不可被修改
a1 = (‘cui‘,‘rain‘,‘sir‘,[‘hell‘,‘keke‘])
print(a1)
a1[3].append(‘while‘)
print(a1)
輸出結果:
(‘cui‘, ‘rain‘, ‘sir‘, [‘hell‘, ‘keke‘])
(‘cui‘, ‘rain‘, ‘sir‘, [‘hell‘, ‘keke‘, ‘while‘])
總結:對於元祖來說他的元素是不可以被修改,但是他元素內的內容是可以被修改,向上面的舉例來說,如果我們想修改元素‘cui’是不可以


重要:一般來說對於字串在使用一個功能的時候一般不會改變原來的內容,而對於list,tuple,dict來說一般會在原來對象上進行修改

5、字典、dict
a、建立和轉換
n1 = {‘rain‘:‘sir‘,‘tan‘:‘aaa‘}
n1 = dict({‘rain‘:‘sir‘,‘tan‘:‘aaa‘})

列表到字串

a1 = [‘rain‘,‘sir‘]

a2 = dict(enumerate(a1))
print(a2)


b、基本的特性
n1.fromkeys()--------------------------------------------------用來建立一個新的字典

如果一個方法的上面有staticmethod這上單詞那麼這個是用類來調用的,像平常我們一般是用對象來調用方法
舉例:
n1 = dict.fromkeys([‘k1‘,‘k2‘,‘k3‘],[])
print(n1)
n1["k1"].append(‘bbb‘)
print(n1)
輸出結果:
{‘k1‘: [], ‘k2‘: [], ‘k3‘: []}
{‘k1‘: [‘bbb‘], ‘k2‘: [‘bbb‘], ‘k3‘: [‘bbb‘]}
總的結:
對於fromkeys來說後面所建立的vlan值他們使用的是同一個記憶體位址。這也就解釋了為什麼在對於k1的Value值添加之後其他的都添加了

 

n1.get()--------------------------------------------------------------------------------------------------------------------根據key值來擷取Value,與用索引不同的是,如果沒有這個key值那麼get會給它返回一個空值,而索引不會則會報錯,這裡的d是預設的填充的值,當vlaue沒有時我們可以用預設值來填充

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.