Python——基本的方法

來源:互聯網
上載者:User

標籤:有序   last   執行   asc   app   tin   AC   編碼轉換   一個   

格式化

我們經常會輸出類似‘親愛的xxx你好!你xx月的話費是xx,餘額是xx‘之類的字串,而xxx的內容都是根據變數變化的,所以,需要一種簡便的格式化字串的方式

>>> ‘Hello, %s‘ % ‘world‘‘Hello, world‘>>> ‘Hi, %s, you have $%d.‘ % (‘Michael‘, 1000000)‘Hi, Michael, you have $1000000.‘

 

format()

另一種格式化字串的方法是使用字串的format()方法,它會用傳入的參數依次替換字串內的預留位置{0}{1}……,不過這種方式寫起來比%要麻煩得多:

>>> ‘Hello, {0}, 成績提升了 {1:.1f}%‘.format(‘小明‘, 17.125)‘Hello, 小明, 成績提升了 17.1%‘

 

迴圈

所以for x in ...迴圈就是把每個元素代入變數x,然後執行縮排塊的語句

sum = 0for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:    sum = sum + xprint(sum)

range(5)產生的序列是從0開始小於5的整數

>>> list(range(5))[0, 1, 2, 3, 4]

如果要計算1-100的整數之和

sum = 0for x in range(101):    sum = sum + xprint(sum)

第二種迴圈是while迴圈,只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。比如我們要計算100以內所有奇數之和,可以用while迴圈實現

sum = 0n = 99while n > 0:    sum = sum + n    n = n - 2print(sum)

利用迴圈依次對list中的每個名字列印出Hello, xxx!

L = [‘Bart‘, ‘Lisa‘, ‘Adam‘]for name in L:    print(‘hello,%s!‘ %name)

輸出為

hello,Bart! hello,Lisa! hello,Adam! 

break結束迴圈,continue開始下一次迴圈。

有些時候,如果代碼寫得有問題,會讓程式陷入“死迴圈”,也就是永遠迴圈下去。這時可以用Ctrl+C退出程式,或者強制結束Python進程

 

字典

dict

Python內建了字典:dict的支援,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)儲存,具有極快的尋找速度。

給定一個名字,要尋找對應的成績,就先要在names中找到對應的位置,再從scores取出對應的成績,list越長,耗時越長。

如果用dict實現,只需要一個“名字”-“成績”的對照表,直接根據名字尋找成績,無論這個表有多大,尋找速度都不會變慢。用Python寫一個dict如下

>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}>>> d[‘Michael‘]95

 把資料放入dict的方法,除了初始化時指定外,還可以通過key放入,由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值衝掉

>>> d[‘Jack‘] = 90>>> d[‘Jack‘]90>>> d[‘Jack‘] = 88>>> d[‘Jack‘]88

如果key不存在,dict就會報錯,要避免key不存在的錯誤,有兩種辦法,一是通過in判斷key是否存在

>>> ‘Thomas‘ in dFalse

二是通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

>>> d.get(‘Thomas‘)>>> d.get(‘Thomas‘, -1)-1

要刪除一個key,用pop(key)方法,對應的value也會從dict中刪除

>>> d.pop(‘Bob‘)75>>> d{‘Michael‘: 95, ‘Tracy‘: 85}

請務必注意,dict內部存放的順序和key放入的順序是沒有關係的。

和list比較,dict有以下幾個特點:

  1. 尋找和插入的速度極快,不會隨著key的增加而變慢;
  2. 需要佔用大量的記憶體,記憶體浪費多。

而list相反:

  1. 尋找和插入的時間隨著元素的增加而增加;
  2. 佔用空間小,浪費記憶體很少。

所以,dict是用空間來換取時間的一種方法。

因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(Hash),要保證hash的正確性,作為key的對象就不能變。在Python中,字串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key

>>> key = [1, 2, 3]>>> d[key] = ‘a list‘Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: unhashable type: ‘list‘
set

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。

要建立一個set,需要提供一個list作為輸入集合

>>> s = set([1, 1, 2, 2, 3, 3])>>> s{1, 2, 3}

通過add(key)和remove(key)增刪元素

set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作

>>> s1 = set([1, 2, 3])>>> s2 = set([2, 3, 4])>>> s1 & s2{2, 3}>>> s1 | s2{1, 2, 3, 4}

 

 集合列表

list

Python內建的一種資料類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。

比如,列出班裡所有同學的名字,就可以用一個list表示

>>> classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘]>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘]

len()函數可以獲得list元素的個數,用索引來訪問list中每一個位置的元素,記得索引是從0開始的,如果要取最後一個元素,除了計算索引位置外,還可以用-1做索引,直接擷取最後一個元素

>>> classmates[-1]‘Tracy‘

追加元素

>>> classmates.append(‘Adam‘)>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘Adam‘]

插入元素

>>> classmates.insert(1, ‘Jack‘)>>> classmates[‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘, ‘Adam‘]

刪除元素

>>> classmates.pop()‘Adam‘>>> classmates[‘Michael‘, ‘Jack‘, ‘Bob‘, ‘Tracy‘]>>> classmates.pop(1)‘Jack‘>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘]

修改元素

>>> classmates[1] = ‘Sarah‘>>> classmates[‘Michael‘, ‘Sarah‘, ‘Tracy‘]

list裡面的元素的資料類型也可以不同

>>> L = [‘Apple‘, 123, True]
tuple

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:

>>> classmates = (‘Michael‘, ‘Bob‘, ‘Tracy‘)

只有1個元素的tuple定義時必須加一個逗號,,來消除歧義

>>> t = (1,)>>> t(1,)

list和tuple是Python內建的有序集合,一個可變,一個不可變。根據需要來選擇使用它們。

 

資料轉換

因為input()返回的資料類型是strstr不能直接和整數比較,必須先把str轉換成整數。Python提供了int()函數來完成這件事情

s = input(‘birth: ‘)birth = int(s)if birth < 2000:    print(‘00前‘)else:    print(‘00後‘)

 

 

字元編碼

ord()函數擷取字元的整數表示,chr()函數把編碼轉換為對應的字元

>>> ord(‘中‘)20013>>> chr(66)‘B‘>>> chr(25991)‘文‘

Python對bytes類型的資料用帶b首碼的單引號或雙引號表示

x = b‘ABC

以Unicode表示的str通過encode()方法可以編碼為指定的bytes

>>> ‘ABC‘.encode(‘ascii‘)b‘ABC‘>>> ‘中文‘.encode(‘utf-8‘)b‘\xe4\xb8\xad\xe6\x96\x87‘

要計算str包含多少個字元,可以用len()函數

>>> len(‘ABC‘)3>>> len(‘中文‘)2

為了避免亂碼問題,應當始終堅持使用UTF-8編碼對strbytes進行轉換。

由於Python原始碼也是一個文字檔,所以,當你的原始碼中包含中文的時候,在儲存原始碼時,就需要務必指定儲存為UTF-8編碼。當Python解譯器讀取原始碼時,為了讓它按UTF-8編碼讀取,我們通常在檔案開頭寫上這兩行:

#!/usr/bin/env python3#-*- coding:utf-8 -*-

第一行注釋是為了告訴Linux/OS X系統,這是一個Python可執行程式,Windows系統會忽略這個注釋;

第二行注釋是為了告訴Python解譯器,按照UTF-8編碼讀取原始碼,否則,你在原始碼中寫的中文輸出可能會有亂碼。

申明了UTF-8編碼並不意味著你的.py檔案就是UTF-8編碼的,必須並且要確保文字編輯器正在使用UTF-8 without BOM編碼

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.