Python筆記:string,tuple,list,dictionary的區別(之二,高階用法與型別轉換)
上一篇《Python筆記:string,tuple,list,dictionary的區別(之一,基本用法與區別)》講述了這四種型別的基本用法與區別,本篇講述的是高階用法與型別轉換。關於list的更多的高階用法在下一篇筆記中有詳細演示。《List的高階用法 (aliasing, mutability, cloning詳解)》
tuple的用法
平時寫程式碼tuple用的不多。具體的用法在MIT的python課程裡提到過兩種。
- 定義函式的返回值時,用tuple可以返回多個值。但是我發現list也有這個功能,可能tuple的不可修改性更適合完成這個場景。
#used to return more than one value from a function
def quotient_and_remainder(x, y):
q = x // y
r = x % y
return(q, r)
result = quotient_and_remainder(4,5)
print(result)
(0, 4)
2.互換賦值(swap),python的這種操作可以減少一個臨時變數的使用。這種用法同樣可以用在list型別上。
x_tuple = ('a',1)
y_tuple = ('b',2)
(x_tuple, y_tuple) = (y_tuple, x_tuple)
print(x_tuple)
print(y_tuple)
('b', 2)
('a', 1)
list 的用法
list作為一種常見object,有很多的method可以用。
x_list = ['Peggy','Susie','Daniel']
y_list = ['Pedro','Rebecca']
print(x_list)
print(y_list)
['Peggy', 'Susie', 'Daniel']
['Pedro', 'Rebecca']
Expression | Result |
---|---|
x_list.append(‘George’) | x_list = [‘Peggy’, ‘Susie’, ‘Daniel’, ‘George’] |
x_list.pop() | x_list = [‘Peggy’, ‘Susie’, ‘Daniel’] |
x_list.extend(y_list) | x_list = [‘Peggy’, ‘Susie’, ‘Daniel’, ‘Pedro’, ‘Rebecca’] |
x_list.remove(‘Daniel’) | x_list = [‘Peggy’, ‘Susie’, ‘Pedro’, ‘Rebecca’] |
del(x_list[1]) | x_list = [‘Peggy’, ‘Pedro’, ‘Rebecca’] |
x_list.append('George')
print(x_list)
x_list.pop()
print(x_list)
x_list.extend(y_list)
print(x_list)
x_list.remove('Daniel')
print(x_list)
del(x_list[1])
print(x_list)
['Peggy', 'Susie', 'Daniel', 'George']
['Peggy', 'Susie', 'Daniel']
['Peggy', 'Susie', 'Daniel', 'Pedro', 'Rebecca']
['Peggy', 'Susie', 'Pedro', 'Rebecca']
['Peggy', 'Pedro', 'Rebecca']
- append(),無論輸入是element還是list,都會當成element。
- '+'的作用類似於extend,輸入都是list,然後把裡面的element新增到list裡面。
string 和list 之間的轉換,split(),join() 用於文字分析
- string可以使用split()函式,將其中每一個單詞分離成單獨元素,結果是list型別。
text_string = 'Who knows what will happen in the future?'
text_string.split()[-1]
'future?'
text_list = text_string.split()
text_list
['Who', 'knows', 'what', 'will', 'happen', 'in', 'the', 'future?']
- list可以使用join()函式,將很多個字串用指定的符號連結起來,返回字串型別
text_string_rejoin = ' '.join(text_list)
text_string_rejoin
'Who knows what will happen in the future?'
生成dictionary的方法
- 通過字串生成字典,在文字處理中常見。
data = 'the quick brown fox jumps over a lazy dog.'
chars = list(set(data))
data_size, vocab_size = len(data), len(chars)
print('There are %d total characters and %d unique characters in your data.' % (data_size, vocab_size))
There are 42 total characters and 28 unique characters in your data.
char_to_ix = { ch:i for i,ch in enumerate(sorted(chars)) }
ix_to_char = { i:ch for i,ch in enumerate(sorted(chars)) }
print(ix_to_char)
print(char_to_ix)
{0: ' ', 1: '.', 2: 'a', 3: 'b', 4: 'c', 5: 'd', 6: 'e', 7: 'f', 8: 'g', 9: 'h', 10: 'i', 11: 'j', 12: 'k', 13: 'l', 14: 'm', 15: 'n', 16: 'o', 17: 'p', 18: 'q', 19: 'r', 20: 's', 21: 't', 22: 'u', 23: 'v', 24: 'w', 25: 'x', 26: 'y', 27: 'z'}
{' ': 0, '.': 1, 'a': 2, 'b': 3, 'c': 4, 'd': 5, 'e': 6, 'f': 7, 'g': 8, 'h': 9, 'i': 10, 'j': 11, 'k': 12, 'l': 13, 'm': 14, 'n': 15, 'o': 16, 'p': 17, 'q': 18, 'r': 19, 's': 20, 't': 21, 'u': 22, 'v': 23, 'w': 24, 'x': 25, 'y': 26, 'z': 27}
- 通過兩個同樣長度的list來生成字典
names = ["Peggy", "Susie", "Daniel"]
animals = ["pig", "sheep", "dog"]
最直接的想法是分別對names,和animals做遍歷賦值
names_animals = {}
for i in range(len(names)):
names_animals[names[i]] = animals[i]
print(names_animals)
{'Peggy': 'pig', 'Susie': 'sheep', 'Daniel': 'dog'}
另一種方法,是呼叫zip函式將兩個list合併,再做for迴圈。這種方法更像python的風格。
names_animals = {}
names_animals_zipped = zip(names, animals)
names_animals = { name:animal for name,animal in names_animals_zipped }
print(names_animals)
{'Peggy': 'pig', 'Susie': 'sheep', 'Daniel': 'dog'}
###參考連結
- Python - Lists https://www.tutorialspoint.com/python/python_lists.htm
相關文章
- 日期型別與String型別的轉換型別
- python中的list、tuple和dictionaryPython
- Python中基礎資料型別(List、Tuple、Dict)的概念和用法Python資料型別
- String.valueOf和強制型別轉換(String)的區別型別
- TypeScript筆記(二)高階型別TypeScript筆記型別
- list和tuple元組的區別
- 容器,型別轉換。List。型別
- Python3學習筆記2,基本資料型別-list、tuple、set、dictPython筆記資料型別
- Java中基本型別Array與複合型別List的互相轉換Java型別
- Python中的基礎資料型別(List,Tuple,Dict)及其常用用法簡析Python資料型別
- Python中tuple和list的區別?Python基礎學習!Python
- Python開發的入門教程(二)-List和Tuple型別Python型別
- VIM高階用法筆記【轉】筆記
- 型別轉換(int 和 String)型別
- python之 資料型別判定與型別轉換Python資料型別
- java型別轉換與強制型別轉換(轉)Java型別
- 自學PHP筆記 (三) 型別轉換PHP筆記型別
- 自學PHP筆記(三) 型別轉換PHP筆記型別
- Python中元組tuple的作用以及tuple和list的轉換Python
- Python學習筆記 String型別常用方法Python筆記型別
- Python中tuple和list有什麼區別?Python入門!Python
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- 【C#學習筆記】型別轉換C#筆記型別
- CUDA 學習筆記之型別轉換筆記型別
- c#中Array,ArrayList 與List<T>的區別、共性與轉換C#
- Python進階:切片的誤區與高階用法Python
- c++中幾種常見的型別轉換。int與string的轉換,float與string的轉換以及string和long型別之間的相互轉換。to_string函式的實現和應用。C++型別函式
- Map和String型別之間的轉換型別
- 進階篇_型別打包專家tuple型別
- python 與 Mysql 資料型別轉換PythonMySQL 資料型別
- 【python】str與json型別轉換PythonJSON型別
- python中的型別轉換Python型別
- Python引用型別和值型別的區別與使用Python型別
- String和基本資料型別的相互轉換資料型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- (轉)CWnd與HWND的區別與轉換
- Typescript高階型別TypeScript型別
- PHP 型別轉換&&型別強制轉換PHP型別