1. 程式人生 > >Python學習第7天---字串及資料結構

Python學習第7天---字串及資料結構

建立字串很簡單,只要為變數分配一個值即可。例如:

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個基督徒都倖免於難。

問這些人最開始是怎麼站的,哪些位置是基督徒哪些位