python3學習筆記(一)——數字、字符串、列表、字典、元組
什麽是python解釋器?
python代碼在解釋器中運行。解釋器是代碼與計算機硬件之間的軟件邏輯層。
python的執行過程
源代碼(.py文件) --> 編譯 --> 字節碼(.pyc文件) --> python虛擬機解釋字節碼-->執行
python的主要實現方式:CPython、JPython(Java)、IronPython(Windows)
表達式建立並處理對象-->表達式構成語句-->語句組成模塊-->模塊組成程序
Python核心數據類型:
數字
字符串
列表
字典
元組
集合
文件
None、布爾型
函數、模塊、類
一、數字
1.加減乘除
>>> 3+5
8
>>> 3-5
-2
>>> 3*5
15
>>> 5/3
1.6666666666666667
>>> 5.0/3
1.6666666666666667
>>> 5//3
1
>>> 5.0//3
1.0
>>> -5//3
-2
>>> -7//3 # 向下取舍
-3
>>> 23 % 10
3
>>> 3**2
9
2.內置函數
>>> int(3.14) 3 >>> float(3) 3.0
3.內置數學模塊
>>> import math >>> math.pi 3.141592653589793 >>>import random
二、字符串
字符串的特點:
1.字符串是單個字符的字符串序列,是有序的
2.不可變性,不可以對原始的字符串進行改變。
字符串操作:
>>> s = ‘hello world‘
1.計算字符串的長度
>>> len(s)
11
2.索引
>>> s[0] ‘h‘ >>> s[6] ‘w‘ >>> s[-1] ‘d‘ >>> s[-2] ‘l‘
3.切片
>>> s[:] ‘hello world‘ >>> s[0:4] # [a,b) ‘hell‘ >>> s[2:4] ‘ll‘ >>> s[-5:-1] ‘worl‘ >>> s[-5:] ‘world‘
4.字符串拼接
>>> s1 = ‘hello ‘ >>> s2 = ‘world‘ >>> s1 + s2 ‘hello world‘
5.字符串的方法
5.1.字符串大小寫轉換
>>> # 字符串首字符大寫 ... print("hello world".capitalize()) Hello worldprint("hello WORLD".swapcase()) >>> # 將字符串變為標題 ... print("hello WORLD".title()) Hello World >>> # 將字符串轉為大寫 ... print("hello world".upper()) HELLO WORLD >>> # 把字符串轉為小寫 ... print("HELLO WORLD".lower()) hello world >>> # 翻轉字符串中的大小寫 ... print("hello WORLD".swapcase()) HELLO world
5.2.字符串分割
>>> # 以某個元素為分割點,將字符串分為3部分,從左往右找到的第一個元素為分割點 ... print(‘helloworld‘.partition(‘o‘)) (‘hell‘, ‘o‘, ‘world‘) >>> # 以某個元素為分割點,將字符串分為3部分,從右往左找到的第一個元素為分割點 ... print(‘helloworld‘.rpartition(‘o‘)) (‘hellow‘, ‘o‘, ‘rld‘) >>> # 替換原字符串中的元素,默認全部替換,可以指定替換幾個(從左往右數) ... print("hello world".replace(‘o‘, ‘a‘, 1)) hella world >>> # 以某個元素為分割點,將字符串分割,從左往右分割n次 ... print("hello world".split(‘o‘, 1)) [‘hell‘, ‘ world‘] >>> # 以某個元素為分割點,將字符串分割,從右往左分割n次 ... print("hello world".rsplit(‘o‘, 1)) [‘hello w‘, ‘rld‘] >>> # 按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。 ... print(‘hello\nworld‘.splitlines(True)) [‘hello\n‘, ‘world‘]
5.3.字符串中查找元素
>>> # 統計某個字符串從索引n到y出現的次數,缺省為在整個字符串中查找 ... print("hello world".count(‘o‘, 7, 10)) 1 >>> # 在索引[n , y)之間查找元素,缺省為[:]返回元素的索引,如果沒找到返回-1 ... print("hello world".find(‘e‘)) 1 >>> print("hello world".find(‘o‘, 0, 2)) -1 >>> # 在[n, y)之間找元素的索引值,沒找到會報錯 ... print("hello world".index(‘o‘)) 4 >>> print("hello world".index(‘e‘, 0, 5)) 1
5.4.字符串判斷
>>> # 判斷字符串是否以某個元素開始 ... print(‘helloworld‘.startswith(‘h‘)) True >>> # 判斷字符串的的從[n,y)的索引之間是否以某個字符結尾,返回值為布爾值 ... print("hello world".endswith(‘e‘, 0, 2)) True >>> # 判斷是否是只有數字或字母 ... print(‘abc123‘.isalnum()) True >>> # 判斷是否只含有字母 ... print(‘abc‘.isalpha()) True >>> # 判斷字母是否都是小寫 ... print("Hello".islower()) False >>> # 判斷字符是不是空格 ... print(" ".isspace()) True >>> # 判斷是不是字符串是不是標題(單詞首字母是不是大寫) ... print("Hello World".istitle()) True
5.5字符串格式化
>>> # 字符串居中,規定字符串的總長度,不夠用其他字符補齊,默認是空格 ... print("hello world".center(20, "#")) ####hello world##### >>> # 把字符串中的\t替換為n個空格 ... print("hello\tworld".expandtabs(tabsize=20)) hello world >>> print(‘#‘.join("hello world")) h#e#l#l#o# #w#o#r#l#d >>> # 規定輸出字符的長度,並且左對齊,不足部分用指定字符補齊 ... print("hello world".ljust(20, "#")) hello world######### >>> # 規定輸出字符的長度,並且右對齊,不足部分用指定字符補齊 ... print("hello world".rjust(20, "#")) #########hello world >>> # 去除字符串左邊的的空格 ... print(‘ hello‘.lstrip()) hello >>> # 去除字符串右邊的的空格 ... print(‘hello ‘.rstrip()) hello >>> # 去除字符串兩邊的的空格 ... print(‘ hello ‘.strip()) hello >>> # 指定字符串的長度,不夠在前面補0 ... print("123".zfill(5)) 00123 >>> # 字符串的拼接 ... print(‘hello ‘ + ‘world‘) hello world >>> print(‘hello ‘ * 3) hello hello hello
6字符串的賦值
>>> s = ‘hello world‘ >>> print(s) hello world >>> s = "hello world" >>> print(s) hello world >>> s = """hello ... world ... !!!""" >>> print(s) hello world !!! >>> s = ‘hello\tworld‘ >>> print(s) hello world >>> s = r‘hello\tworld‘ >>> print(s) hello\tworld
三、列 表
列表的特點:
1.任意類型的對象的位置相關的有序集合
2.大小可變,可以修改
3.支持任意嵌套
1.計算列表長度
>>> l = [‘Tom‘,‘Bob‘,123,[‘boy‘,‘girl‘]] >>> len(l) 4
2.索引
>>> l[-1] [‘boy‘, ‘girl‘] >>> l[2] 123 >>> l[3][1] ‘girl‘
3.切片
>>> l[:] [‘Tom‘, ‘Bob‘, 123, [‘boy‘, ‘girl‘]] >>> l[1:3] [‘Bob‘, 123] >>> l[-2:-1] [123] >>> l[-2:] [123, [‘boy‘, ‘girl‘]]
4.列表的方法
4.1添加
#在尾部插入一項 >>> l = [‘劉備‘,‘關羽‘,‘張飛‘] >>> l.append(‘諸葛亮‘) >>> l [‘劉備‘, ‘關羽‘, ‘張飛‘, ‘諸葛亮‘] #把一個列表添加到另一個列表末尾 >>> L1 = [‘劉備‘,‘關羽‘,‘張飛‘] >>> L2 = [‘姜維‘,‘諸葛亮‘] >>> L1.extend(L2) >>> L1 [‘劉備‘, ‘關羽‘, ‘張飛‘, ‘姜維‘, ‘諸葛亮‘] #在指定索引位置插入元素 >>> l [‘劉備‘, ‘關羽‘, ‘張飛‘] >>> l.insert(1,‘馬超‘) >>> l [‘劉備‘, ‘馬超‘, ‘關羽‘, ‘張飛‘]
4.2刪除
#刪除所有元素 >>> l.clear() >>> l [] #根據索引刪除元素並打印刪除的元素 >>> l [‘劉備‘, ‘馬超‘, ‘關羽‘, ‘張飛‘] >>> l.pop() #無參數刪除最後一個 ‘張飛‘ >>> l [‘劉備‘, ‘馬超‘, ‘關羽‘] >>> l.pop(1) ‘馬超‘ >>> l [‘劉備‘, ‘關羽‘] #刪除指定元素 >>> l = [‘劉備‘,‘關羽‘,‘張飛‘] >>> l.remove("關羽") >>> l [‘劉備‘, ‘張飛‘]
4.3拷貝
>>> l1 = l.copy() >>> l1 [‘劉備‘, ‘關羽‘, ‘張飛‘] 4.4查找 #統計某個元素出現的次數 >>> l.count(‘關羽‘) 1 #查找[a,b)之間某元素的索引值 >>> L1 [‘劉備‘, ‘關羽‘, ‘張飛‘, ‘姜維‘, ‘諸葛亮‘] >>> L1.index(‘關羽‘) 1 >>> L1.index(‘關羽‘,2,4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: ‘關羽‘ is not in list
4.5排序
# 倒序 >>> l = [‘b‘,‘B‘,‘a‘,‘h‘] >>> l.reverse() >>> l [‘h‘, ‘a‘, ‘B‘, ‘b‘] # 升序 >>> l.sort() >>> l [‘B‘, ‘a‘, ‘b‘, ‘h‘] 降序 >>> l.sort(reverse = True) >>> l [‘h‘, ‘b‘, ‘a‘, ‘B‘]
5.列表解析
>>> row = [[1,2,3],[4,5,6],[7,8,9]] >>> row [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> col = [i[1] for i in row ] >>> col [2, 5, 8] >>> [i[1]+1 for i in row] [3, 6, 9] >>> [i[1] for i in row if i[1] % 2 == 0] [2, 8]
四、字典
字典的特點:
1.通過鍵來存儲
2.沒有固定的從左到右的順序
3.可以改變
1.字典的創建
>>> d = {‘name‘:‘Tom‘,‘job‘:‘IT‘} >>> d {‘job‘: ‘IT‘, ‘name‘: ‘Tom‘} >>> d[‘age‘] = 18 >>> d[‘sex‘] = ‘boy‘ >>> d {‘job‘: ‘IT‘, ‘sex‘: ‘boy‘, ‘name‘: ‘Tom‘, ‘age‘: 18}
2.索引
>>> d = {‘name‘:‘Tom‘,‘job‘:‘IT‘} >>> d {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} >>> d[‘name‘] ‘Tom‘
3.鍵的排序
>>> d.keys() dict_keys([‘name‘, ‘job‘]) >>> list(d.keys()) [‘name‘, ‘job‘] >>> Ks = list(d.keys()) >>> Ks.sort() >>> for k in Ks: ... print(k,‘-->‘,d[k]) ... job --> IT name --> Tom
4.判斷
>>> d {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} # 判斷一個鍵是否存在 >>> ‘name‘ in d True
5.字典的方法
5.1刪除
# 清空字典 >>> d = {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} >>> d.clear() >>> d {} #刪除指定鍵 >>> d.pop(‘sex‘,‘not find‘) ‘not find‘ >>> d.pop(‘name‘) ‘Tom‘ #隨機刪除鍵值對,字典為空時報錯 >>> d.popitem() (‘job‘, ‘IT‘) >>> d.popitem() (‘name‘, ‘Tom‘) >>> >>> d.popitem() Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: ‘popitem(): dictionary is empty‘
5.2拷貝
>>> d = {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} >>> D = d.copy() >>> D {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘}
5.3創建字典
>>> l [‘name‘, ‘age‘] >>> >>> d={} >>> d.fromkeys(l,‘abc‘) {‘age‘: ‘abc‘, ‘name‘: ‘abc‘} # 如果鍵不存在添加一個,如果存在不做更改 >>> d.setdefault(‘sex‘,‘boy‘) ‘boy‘ >>> d {‘job‘: ‘IT‘, ‘sex‘: ‘boy‘, ‘name‘: ‘Tom‘} >>> d.setdefault(‘sex‘,‘girl‘) ‘boy‘ >>> d {‘job‘: ‘IT‘, ‘sex‘: ‘boy‘, ‘name‘: ‘Tom‘} #合並字典,把一個字典加到另一個字典 >>> d1 = {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} >>> d2 = {‘sex‘:‘boy‘} >>> d1.update(d2) >>> d1 {‘job‘: ‘IT‘, ‘sex‘: ‘boy‘, ‘name‘: ‘Tom‘}
5.4查找
# 根據鍵查找值 >>> d = {‘name‘: ‘Tom‘, ‘job‘: ‘IT‘} >>> d.get(‘name‘) ‘Tom‘ >>> d.get(‘sex‘,‘not find‘) ‘not find‘ 5.5 >>> d.items() dict_items([(‘job‘, ‘IT‘), (‘name‘, ‘Tom‘)]) >>> for k,v in d.items(): ... print(k,v) ... job IT name Tom >>> for k in d.items(): ... print(k) ... (‘job‘, ‘IT‘) (‘name‘, ‘Tom‘)
五、元組
元組的特點:
1.不可變性
2.支持嵌套
>>> t = (1,2)
1.計算元組的長度
>>> len(t)
2
2.元組的方法:
>>> t.count(1) 1 >>> t.index(1) 0
python3學習筆記(一)——數字、字符串、列表、字典、元組