def main(): str1 = 'hello, world!' # 經過len函數計算字符串的長度 print(len(str1)) # 13 # 得到字符串首字母大寫的拷貝 print(str1.capitalize()) # Hello, world! # 得到字符串變大寫後的拷貝 print(str1.upper()) # HELLO, WORLD! # 從字符串中查找子串所在位置 print(str1.find('or')) # 8 print(str1.find('shit')) # -1 # 與find相似但找不到子串時會引起異常 # print(str1.index('or')) # print(str1.index('shit')) # 檢查字符串是否以指定的字符串開頭 print(str1.startswith('He')) # False print(str1.startswith('hel')) # True # 檢查字符串是否以指定的字符串結尾 print(str1.endswith('!')) # True # 將字符串以指定的寬度居中並在兩側填充指定的字符 print(str1.center(50, '*')) # 將字符串以指定的寬度靠右放置左側填充指定的字符 print(str1.rjust(50, ' ')) str2 = 'abc123456' # 從字符串中取出指定位置的字符(下標運算) print(str2[2]) # c # 字符串切片(從指定的開始索引到指定的結束索引) print(str2[2:5]) # c12 print(str2[2:]) # c123456 print(str2[2::2]) # c246 print(str2[::2]) # ac246 print(str2[::-1]) # 654321cba print(str2[-3:-1]) # 45 # 檢查字符串是否由數字構成 print(str2.isdigit()) # False # 檢查字符串是否以字母構成 print(str2.isalpha()) # False # 檢查字符串是否以數字和字母構成 print(str2.isalnum()) # True str3 = ' jackfrued@126.com ' print(str3) # 得到字符串修剪左右兩側空格的拷貝 print(str3.strip()) #修改左邊的空格,若是lstrip('0')則是去掉左邊指定爲‘0’的字符 print(str3.lstrip()) print(str3.rstrip()) #防止導入函數時,直接執行 if __name__ == '__main__': main()
def main(): list1 = [1, 3, 5, 7, 100] print(list1) list2 = ['hello'] * 5 print(list2) # 計算列表長度(元素個數) print(len(list1)) # 下標(索引)運算 print(list1[0]) print(list1[4]) # print(list1[5]) # IndexError: list index out of range print(list1[-1]) print(list1[-3]) list1[2] = 300 print(list1) # 添加元素 list1.append(200) list1.insert(1, 400) list1 += [1000, 2000] print(list1) print(len(list1)) # 刪除元素 list1.remove(3) if 1234 in list1: list1.remove(1234) del list1[0] print(list1) # 清空列表元素 list1.clear() print(list1) if __name__ == '__main__': main()
列表也可使用切片操做,這樣就能夠實現對列表的賦值或者將列表中的一部分取出來python
def main(): list1 = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry'] list2 = sorted(list1) # sorted函數返回列表排序後的拷貝不會修改傳入的列表 # 函數的設計就應該像sorted函數同樣儘量不產生反作用 list3 = sorted(list1, reverse=True) # 經過key關鍵字參數指定根據字符串長度進行排序而不是默認的字母表順序 list4 = sorted(list1, key=len) print(list1) print(list2) print(list3) print(list4) # 給列表對象發出排序消息直接在列表對象上進行排序 list1.sort(reverse=True) print(list1) if __name__ == '__main__': main()
import sys def main(): f = [x for x in range(1, 10)] print(f) f = [x + y for x in 'ABCDE' for y in '1234567'] print(f) # 用列表的生成表達式語法建立列表容器 # 用這種語法建立列表以後元素已經準備就緒因此須要耗費較多的內存空間 f = [x ** 2 for x in range(1, 1000)] print(sys.getsizeof(f)) # 查看對象佔用內存的字節數 print(f) # 請注意下面的代碼建立的不是一個列表而是一個生成器對象 # 經過生成器能夠獲取到數據但它不佔用額外的空間存儲數據 # 每次須要數據的時候就經過內部的運算獲得數據(須要花費額外的時間) f = (x ** 2 for x in range(1, 1000)) print(sys.getsizeof(f)) # 相比生成式生成器不佔用存儲數據的空間 print(f) for val in f: print(val) if __name__ == '__main__': main()
以下面的斐波那契數列生成器,不過本身對生成器函數理解還不是很深git
def fib(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b yield a def main(): for val in fib(20): print(val) if __name__ == '__main__': main()
和列表相似,主要區別在於元組不能修改。api
def main(): # 定義元組 t = ('駱昊', 38, True, '四川成都') print(t) # 獲取元組中的元素 print(t[0]) print(t[3]) # 遍歷元組中的值 for member in t: print(member) # 從新給元組賦值 # t[0] = '王大錘' # TypeError # 變量t從新引用了新的元組原來的元組將被垃圾回收 t = ('王大錘', 20, True, '雲南昆明') print(t) # 將元組轉換成列表 person = list(t) print(person) # 列表是能夠修改它的元素的 person[0] = '李小龍' person[1] = 25 print(person) # 將列表轉換成元組 fruits_list = ['apple', 'banana', 'orange'] fruits_tuple = tuple(fruits_list) print(fruits_tuple) if __name__ == '__main__': main()
python的集合和數學上的集合是一致的數據結構
def main(): 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)) if __name__ == '__main__': main()
主要是由鍵值對來組成,鍵和值用冒號來進行分開app
def main(): 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) if __name__ == '__main__': main()