Python學習第7天---字串及資料結構
阿新 • • 發佈:2019-08-12
建立字串很簡單,只要為變數分配一個值即可。例如:
value1 = 'hello'
value2 = "Python"
Python不支援單字元型別,單字元在 Python 中也是作為一個字串使用。
Python訪問子字串,可以使用方括號來擷取字串,如下例項:
value1 = 'hello'
value2 = "Python"
print(value1[0])
print(value2[1:4])
下面我們就來介紹一些方法,來更好的瞭解字串。
string = "hello python" # 把字串的第一個字元大寫 print(string.capitalize()) # 返回子串在string中出現的次數。 # 如果指定beg或end 則在返回指定範圍內str出現的次數 print(string.count('o')) # 判斷字串是否以str結束, # 如果指定beg或者end則判斷指定範圍內是否以str結束。 print(string.endswith('on')) # 判斷str是否包含在string之中,如果包含則返回開始位置的索引值,否則返回-1 print(string.find('py')) print(string.find('wow')) # 格式化字串 print(string.format()) # 跟find方法類似,但如果str不在string中會報一個異常 # print(string.index('wow')) # 以string作為分隔符,將seq中所有元素合併成為一個新的字串 # print(string.join(seq)) # 將string中的str1,替換成為str2,如果指定num,則替換不超過num次 print(string.replace('ello','i')) # 以str為分隔符切片string。如果指定num,則僅分隔num+個子字串 print(string.split(" ")) # 去除string首尾兩邊的空白符號 print(string.strip())
注意:以上返回的都是原字串的拷貝。
02 列表—List
列表是Python中最基礎的資料型別,它可以作為一個方括號內的逗號分隔值出現。
列表中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
列表可以進行的操作包括索引,切片,加,乘,檢查成員。
建立一個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可。如下所示:
list1 = ['a','b','c','d'] list2 = [1,2,3,4,5,6,7,8,9] 對列表的一些基礎操作: list1 = ['a','b','c','d'] list2 = [1,2,3,4,5,6,7,8,9] # 訪問列表的值 print(list1[0]) print(str(list2[1:5])) # 列表中追加值 list1.append('Chrome') print(list1) list2.append(10) print(list2) # 刪除列表元素 del list2[5] print(list2) list1.remove('Chrome') print(list1) # 反向列表中的元素 list1.reverse() print(list1) # 對列表進行排序 list2.sort() print(list2)
03 元組—tuple
Python的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) 對元組的一些基礎操作: # 修改元組 tup1 = (12, 34.56) tup2 = ('abc', 'xyz') # 以下修改元組元素操作是非法的。 # tup1[0] = 100 # 建立一個新的元組 tup3 = tup1 + tup2 print tup3 # 刪除元組 元組中的元素值是不允許刪除的,但是可以使用 del 刪除整個元組。 tup = ('physics', 'chemistry', 1997, 2000) del tup print tup
04 集合
Python中的集合跟數學上的集合是一致的,不允許有重複元素,而且可以進行交集、並集、差集等運算。
set1 = {1, 2, 3, 3, 3, 2}
print(set1)
print('Length =', len(set1))
set2 = set(range(1, 10))
print(set2)
set1.add(4)
set1.add(5)
set2.update([11, 12])
print(set1)
print(set2)
set2.discard(5)
# remove的元素如果不存在會引發KeyError
if 4 in set2:
set2.remove(4)
print(set2)
# 遍歷集合容器
for elem in set2:
print(elem ** 2, end=' ')
print()
# 將元組轉換成集合
set3 = set((1, 2, 3, 3, 2, 1))
print(set3.pop())
print(set3)
# 集合的交集、並集、差集、對稱差運算
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
print(set1 ^ set2)
# print(set1.symmetric_difference(set2))
# 判斷子集和超集
print(set2 <= set1)
# print(set2.issubset(set1))
print(set3 <= set1)
# print(set3.issubset(set1))
print(set1 >= set2)
# print(set1.issuperset(set2))
print(set1 >= set3)
# print(set1.issuperset(set3))
05 字典-dictionary
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
下面的程式碼演示瞭如何定義和使用字典。
scores = {'小白': 95, '白元芳': 78, '狄仁傑': 82}
# 通過鍵可以獲取字典中對應的值
print(scores['小白'])
print(scores['狄仁傑'])
# 對字典進行遍歷(遍歷的其實是鍵再通過鍵取對應的值)
for elem in scores:
print('%s\t--->\t%d' % (elem, scores[elem]))
# 更新字典中的元素
scores['白元芳'] = 65
scores['諸葛王朗'] = 71
scores.update(冷麵=67, 方啟鶴=85)
print(scores)
if '武則天' in scores:
print(scores['武則天'])
print(scores.get('武則天'))
# get方法也是通過鍵獲取對應的值但是可以設定預設值
print(scores.get('武則天', 60))
# 刪除字典中的元素
print(scores.popitem())
print(scores.popitem())
print(scores.pop('小白', 100))
# 清空字典
scores.clear()
print(scores)
06 每日小測
1、有15個基督徒和15個非基督徒在海上遇險,為了能讓一部分人活下來不得不將其中15個人扔到海里面去,有個人想了個辦法就是:
大家圍成一個圈,由某個人開始從1報數,報到9的人就扔到海里面,他後面的人接著從1開始報數,報到9的人繼續扔到海里面,直到扔掉15個人。由於上帝的保佑,15個基督徒都倖免於難。
問這些人最開始是怎麼站的,哪些位置是基督徒哪些位