經過近幾年的發展,Python已成為了資料科學和機器學習的首選語言,許多人也是以開始走上自學python之路。從今天開始,本公衆号将陸續分享Python的基礎操作,希望能夠給予開始入門python的小白一點幫助。話不多說,那麼今天先給大家分享一下python中的常用類型及其應用。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yYjBDO1MWY2gjY0QzYhFzN5Y2NlhTMiVWN0gzYyETMy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.字元串
字元串是 Python 中最常用的資料類型。
1.1 建立字元串
我們可以使用引号 ' 或 " 來建立字元串。
s1 = 'haha1'
s2 = "haha2"
print(s1) # haha1
print(s2) # haha2
1.2 字元串截取與拼接
通過方括号的形式來截取字元串
s1 = 'Hello World!'
s2 = "abcd dcba"
print ("s1[0]: ", s1[0]) # 結果為: s1[0]: H
print ("s2[0:5]: ", s2[0:5]) # 結果為: s2[0:5]: abcd
除此之外,還可以将截取字元串的一部分與其他字段拼接
s1 = 'Hello World!'
s2 = s1[0:6] + 'ABC'
print(s2) # Hello ABC
1.3 轉義字元
在需要在字元中使用特殊字元時,python用反斜杠'\'轉義字元
# 常用的轉義字元有:\n表示換行;\t表示橫向制表符;\\表示反斜杆符号
s1 = 'abc\ndef'
print(s1)
# abc
# def
s2 = 'abc\tdef'
print(s2)
# abc def
s3 = 'abc\\def'
print(s3)
# abc\def
1.4 字元串運算符
具體字元串運算符如下表所示
下面舉栗說明
s1 = 'I am a'
s2 = ' handsome boy!'
s3 = s1 + s2
print(s3) # I am a handsome boy!
print(s3*2) # I am a handsome boy!I am a handsome boy!
print(s3[2]) # a
print(s3[16:19]) # boy
print('c' in s3) # False
print('c' not in s3) # True
print('%s abc'%11) #11 abc
1.5 字元串的常用内置函數
在python中,可以通過字元串的内置函數來快速實作某些功能。
具體操作如下
s = 'abc 123 abc 456'
print(s.count('abc')) #2
print(s.upper()) #ABC 123 ABC 456
print(len(s)) #15
print(s.replace('abc','ok')) #ok 123 ok 456
s2 = ' AA11 '
print(s2.lower()) # aa11
print(s2.strip()) # AA11
2.元組
元組是一個固定長度且不可改變的Python序列對象。
2.1 建立元組
可以通過以下方式來建立元組
tu=(1)
tu2=(1,)
tu3=(1,2,3,4)
tu4=1,2,3,4
type(tu4)
# 輸出結果為:tuple
用tuple可以将任意序列或疊代器轉換成元組
tup = tuple('string')
tup
# 輸出結果為:('s', 't', 'r', 'i', 'n', 'g')
2.2 通路元組元素
元組可以使用下标索引來通路元組中的值
t1 = ('abc','123','456',111)
print(t1[0]) # abc
print(t1[1:3]) # ('123', '456')
2.3 修改元組
元組是不可變的對象,但如果元組中的某個對象是可變的,比如清單,則可以對這個對象進行修改
tup = tuple(['foo', [1, 2], True])
tup[1].append(3)
tup
# 輸出結果為:('foo', [1, 2, 3], True)
還可以使用加法和乘法串聯
tup1 = (4, None, 'foo') + (6, 0) + ('bar',)
tup2 = ('foo', 'bar') * 5
tup1,tup2
# 輸出結果為:
((4, None, 'foo', 6, 0, 'bar'),
('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar'))
2.4 元組拆分與替換
如果你想将元組指派給類似元組的變量,Python會試圖拆分等号右邊的值
tup = (4, 5, 6)
a, b, c = tup
a,b,c
# 輸出結果為:(4, 5, 6)
可以進行簡單的元組替換
a,b = 1,2
b,a = a,b
a,b
# 輸出結果為:(2, 1)
目前Python還支援更進階的元組拆分功能,允許從元組的開頭“摘取”幾個元素。
#它使用了特殊的文法*rest,這也用在函數簽名中以抓取任意長度清單的位置參數
values = 1, 2, 3, 4, 5
a,b,*rest = values
a,b,rest
#rest的部分是想要舍棄的部分,rest的名字不重要。作為慣用寫法,許多Python程式員會将不需要的變量使用下劃線,即*_
# 輸出結果為:(1, 2, [3, 4, 5])
2.5 元組的内置函數
可以使用count來統計某個值的出現頻率
a = (1, 2, 2, 2, 3, 4, 2)
a.count(2)
# 輸出結果為:4
元組還可以通過len()來檢視元素個數
print(len(a)) # 7
3.清單
與元組對比,清單屬于可變的資料類型,它的長度和内容都可變。是以清單可以執行添加、删除。
3.1 建立清單
我們可以通過以下方式來建立清單,清單裡的元素可以是不同資料類型的
li = [1,2,3,4]
li2 = ['a','b','c','d']
li3 = [1,2,'a','b']
3.2 添加元素
可以通過append方法在清單末尾添加元素
a_list = [2, 3, 7, None]
a_list.append('dwarf')#append在清單末尾添加元素
a_list
# 輸出結果為:[2, 3, 7, None, 'dwarf']
使用extend方法可以追加多個元素
x = [4, None, 'foo']
x.extend([7, 8, (2, 3)])
x
# 輸出結果為:[4, None, 'foo', 7, 8, (2, 3)]
3.3 插入元素
通過insert方法向清單的特定位置插入元素
x.insert(2,'abc')
x # [4, None, 'abc', 'foo', 7, 8, (2, 3)]
3.4 删除元素
使用pop移除并傳回指定位置的元素
x.pop(2)
# 輸出結果為:'abc'
我們還可以通過remove來删除清單元素
x.append('foo')#在末尾加上'red'。這樣就有兩個'foo'值
# 此時的x為:[4, None, 'foo', 7, 8, (2, 3), 'foo']
x.remove('foo')#remove會先尋找第一個值并除去
x
# 輸出結果為:[4, None, 7, 8, (2, 3), 'foo']
3.5 切片、拼接、周遊
切片可以選取大多數序列類型的一部分,切片的基本形式是在方括号中使用。切片的起始元素是包括的,不包含結束元素。
seq = [7, 2, 3, 7, 5, 6, 0, 1]
seq[1:5],seq[:5] # start或stop都可以被省略,省略之後,分别預設序列的開頭和結尾
# 輸出結果為:([2, 3, 7, 5], [7, 2, 3, 7, 5])
a = [1,2,3]
a = a + [6,8,7] # 進行拼接操作
print(a) # [1, 2, 3, 6, 8, 7]
我們可以通過以下方式來周遊清單元素
#周遊
lists = ["m1", 1900, "m2", 2000]
#1.使用iter()
for val in iter(lists):
print(val)
#2.enumerate周遊方法
for i, val in enumerate(lists):
print(i, val)
#3.索引周遊
for index in range(len(lists)):
print(lists[index])
4.字典
字典是另一種可變容器模型,且可存儲任意類型對象。字典使用花括号{}包括,鍵和值之間用冒号':'分割,每對鍵-值用逗号','分割。鍵必須唯一,即一個鍵不能對應多個值,不過多個鍵可以指向一個值。
4.1 建立字典
可以通過以下方法建立字典
empty_dict = {} # 建立一個空字典
d1 = {'a' : 'some value', 'b' : [1, 2, 3, 4]}
d1
4.2 通路字典元素
把相應的鍵放入到方括号中即可通路字典元素
print(d1['a']) # 'some value'
但是要注意,如果用字典裡沒有的鍵通路資料時,會輸出錯誤。是以我們可以使用get方法來擷取字典元素,當通路不存在的鍵時,不會出現報錯。
print(d1.get('a')) # some value
print(d1.get('h','該鍵不存在')) # 該鍵不存在
4.3 修改字典
添加字典元素,或者修改原字典鍵對應的值的方法如下
d1['c'] = [6,8,9] # 添加元素
d1['a'] = 'haha' # 更新a
d1
# 結果:{'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]}
同樣,我們也可以使用update方法來實作字典元素的添加和修改
d1.update({'b' : 'foo', 'c' : 12, 'd':'yes'}) # 原d1:{'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]}
d1 # {'a': 'haha', 'b': 'foo', 'c': 12, 'd': 'yes'}
4.4 删除字典元素
可以使用pop或del關鍵字來删除值
d1[5] = 'some value'
print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 5: 'some value'}
d1['dummy'] = 'another value'
print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 5: 'some value', 'dummy': 'another value'}
del d1[5]
print(d1) # {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9], 'dummy': 'another value'}
ret = d1.pop('dummy') # pop可以傳回要删除的字典元素的值
ret,d1 # ('another value', {'a': 'haha', 'b': [1, 2, 3, 4], 'c': [6, 8, 9]})
4.5 字典内置函數
通過len()擷取字典元素個數,即鍵的總數
d = {'a':123,'b':[4,5,6]}
print(len(d)) # 2
通過str()可以以字元串形式輸出字典
print(str(d)) # "{'a': 123, 'b': [4, 5, 6]}"
擷取字典的鍵和值
list(d1.keys()),list(d1.values())
# 結果:(['a', 'b', 'c'], ['haha', [1, 2, 3, 4], [6, 8, 9]])
4.6 字典其餘常用操作
字典周遊方法如下
#1.周遊key值 在使用上,for key in a和 for key in a.keys():完全等價。
a={'a': '1', 'b': '2', 'c': '3'}
print("周遊key值:")
for key in a:
print(key+':'+a[key])
#2.周遊value值
print("周遊value值:")
for value in a.values():
print(value)
#3.周遊字典項
print("周遊字典項:")
for kv in a.items():
print(kv)
#4.周遊字典鍵值
print("周遊字典健值:")
for key,value in a.items():
print(key+':'+value)
字典總是明确地記錄鍵和值之間的關聯關系,但擷取字典的元素時,擷取順序是不可預測的。如果要以特定的順序傳回元素,一種辦法是在for 循環中對傳回的鍵進行排序。
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
print(name.title() + ", thank you for taking the poll.")
# 輸出結果如下:
Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.
根據key找value
d = {'a' : [1, 2, 3], 'b' : [4, 5],'c':[1,2,3,4] }
key = ['a','c']
value=[]
for k in key:
value.append(d[k])
value # [[1, 2, 3], [1, 2, 3, 4]]
根據value找key
#根據value找key
d = { 'a' : [1, 2, 3], 'b' : [4, 5],'c':[1,2,3] }
value = [1,2,3]
t=[k for k,v in d.items() if v == value]
print(t) # ['a', 'c']
5.集合
集合是無序的不可重複的元素的集合。
5.1 建立集合
可以通過以下方法來建立集合
# 兩種方式建立集合:
# 通過set函數
s1 = set([2, 2, 2, 1, 3, 3])
# 或使用尖括号{}
s2 = {2, 2, 2, 1, 3, 3}
print(s1) # {1, 2, 3}
print(s2) # {1, 2, 3}
5.2 添加元素
使用add方法可以将元素添加到集合中
set1 = set(('a', 'bb', 'ccc'))
set1.add('dddd')
set1 # {'a', 'bb', 'ccc', 'dddd'}
除了add方法外,還可以使用update方法來添加元素,且參數可以是清單,元組,字典等
set1.update({5,6})
set1 # {5, 6, 'a', 'bb', 'ccc', 'dddd'}
5.3 删除元素
使用remove方法将元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。
set1.remove('a')
set1 # {5, 6, 'bb', 'ccc', 'dddd'}
discard方法同樣移除集合中的元素,且如果元素不存在,不會發生錯誤。
set1.discard('h') # 不存在的元素,但不會報錯
set1 # {5, 6, 'bb', 'ccc', 'dddd'}
最後,還可以使用pop方法随機删除集合中的一個元素
set1.pop()
set1 # {5, 6, 'bb', 'ccc'}
5.4 集合運算
集合支援合并、交集、差分和對稱差等數學集合運算
下面舉一些例子
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7, 8}
print(a.union(b)) # {1, 2, 3, 4, 5, 6, 7, 8}
print(a.intersection(b)) # {3, 4, 5}
c = a.copy()
c |= b
print(c) # {1, 2, 3, 4, 5, 6, 7, 8}
d = a.copy()
d &= b
print(d) # {3, 4, 5}
6.常用序列函數
6.1 enumerate函數
enumerate() 函數用于将一個可周遊的資料對象(如清單、元組或字元串)組合為一個索引序列,同時列出資料和資料下标,一般用在 for 循環當中。
seasons = ['Spring','Summer','Fall','Winter']
for i,ele in enumerate(seasons):
print(i,ele)
# 結果如下:
0 Spring
1 Summer
2 Fall
3 Winter
6.2 sorted函數
sorted函數可以從任意序列的元素傳回一個新的排好序的清單
print(sorted([7, 1, 2, 6, 0, 3, 2])) # [0, 1, 2, 2, 3, 6, 7]
print(sorted('horse race')) # [' ', 'a', 'c', 'e', 'e', 'h', 'o', 'r', 'r', 's']
6.3 zip函數
zip可以将多個清單、元組或其它序列成對組合成一個元組清單.zip可以處理任意多的序列,元素的個數取決于最短的序列。
seq1 = ['foo', 'bar', 'baz']
seq2 = ['one', 'two', 'three']
zipped = zip(seq1, seq2)
print(list(zipped)) # [('foo', 'one'), ('bar', 'two'), ('baz', 'three')]
zip的常見用法之一是同時疊代多個序列,可能結合enumerate使用
for i, (a, b) in enumerate(zip(seq1, seq2)):
print('{0}: {1}, {2}'.format(i, a, b))
# 結果如下:
0: foo, one
1: bar, two
2: baz, three
6.4 reversed函數
reversed 函數傳回一個反轉的疊代器。
aa = range(10)
rr = reversed(aa)
print(list(rr)) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
至此,本次分享已結束 如果你喜歡的話,可以轉發或者點個“在看”支援一下~ 點選原文連結,可以下載下傳《Python工具代碼速查手冊》,可以點個star支援一下哦~
簡介:浩彬老撕 好玩的資料煉丹師, 曾經的IBM資料挖掘攻城獅, 還沒開始就過氣資料科學界的段子手, 緻力于資料科學知識分享,不定期送書活動