在了解基本數據類型的時候,我們需要了解基本數據類型有哪些?數字int、布爾值bool、字符串str、列表list、元組tuple、字典dict等,其中包括他們的基本用法和其常用的方法,這里會一一列舉出來,以便參考。然后我們還需要了解一些運算符,因為這些基本數據類型常常會用於一些運算等等。
一、運算符
運算通常可以根據最終獲得的值不同,可以分兩類,即結果為具體的值,結果為bool值,那么哪些結果為具體的值-->算數運算、賦值運算,哪些結果又為bool值?--->比較運算、邏輯運算和成員運算。
1、算術運算
2、賦值運算
3、比較運算
4、邏輯運算
5、成員運算
二、基本數據類型
1、數字 ---> int類
當然對於數字,Python的數字類型有int整型、long長整型、float浮點數、complex復數、以及布爾值(0和1),這里只針對int整型進行介紹學習。
在Python2中,整數的大小是有限制的,即當數字超過一定的范圍不再是int類型,而是long長整型,而在Python3中,無論整數的大小長度為多少,統稱為整型int。
其主要方法有以下兩種:
int -->將字符串數據類型轉為int類型, 注:字符串內的內容必須是數字

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = '123' 5 i = int( s ) 6 print( i)
bit_length() -->將數字轉換為二進制,並且返回最少位二進制的位數

#!/user/bin/env python #-*- coding:utf-8 -*- i =123 print( i.bit_length() ) #輸出結果為: >>>5
2、布爾值 --->bool類
對於布爾值,只有兩種結果即True和False,其分別對應與二進制中的0和1。而對於真即True的值太多了,我們只需要了解假即Flase的值有哪些---》None、空(即 [ ]/( ) /" "/{ })、0;

#以下結果為假,即None、‘’、[]、()、{}以及 0 >>> bool(None) False >>> bool('') False >>> bool([]) False >>> bool(0) False >>> bool(()) False >>> bool({}) False
3、字符串 --->str類
關於字符串是Python中最常用的數據類型,其用途也很多,我們可以使用單引號 ‘’或者雙引號“”來創建字符串。
字符串是不可修改的。所有關於字符我們可以從 索引、切片、長度、遍歷、刪除、分割、清除空白、大小寫轉換、判斷以什么開頭等方面對字符串進行介紹。
創建字符串

#!/usr/bin/env python # -*- coding:utf-8 -*- #字符串的形式:使用‘’或者“”來創建字符串 name ='little_five' print(name)
切片

#獲取切片,復數代表倒數第幾個,從0開始 >>> name ="little-five" >>> name[1] 'i' >>> name[0:-2] #從第一個到倒數第二個,不包含倒數第二個 'little-fi'
索引--> index()、find()

#!/usr/bin/env python # -*- coding:utf-8 -*- # 修正版 name = "little_five" #index-->獲取索引,語法->str.index(str, beg=0 end=len(string)),第二個參數指定起始索引beg,第三個參數結束索引end,指在起始索引到結束索引之前獲取子串的索引 print(name.index("l",2,8)) #在索引區間2-8之前查找‘l’,找到是第二個‘l’,其索引為4 #find -->其作用與index相似 print(name.find("l",2)) #結果也為 4
index()與find()的不同之處在於:若索引的該字符或者序列不在字符串內,對於index--》ValueError: substring not found,而對於find -->返回 -1。

#!/usr/bin/env python # -*- coding:utf-8 -*- name = "little_five" print(name.index("q",2)) #index--》輸出為: >>>Traceback (most recent call last): File "C:/Users/28352/PycharmProjects/learning/Day13/test.py", line 5, in <module> print(name.index("q",2)) ValueError: substring not found print(name.find("q",2)) #find--》輸出為: >>> -1
長度 -->len()

name = "little_five" #獲取字符串的長度 print(len(name)) #輸出為: >>> 11
注:len()方法-->同樣可以用於其他數據類型,例如查看列表、元組以及字典中元素的多少。
刪除 --> del

#刪除字符串,也是刪除變量 >>> name ="little-five" >>> del name >>> name Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'name' is not defined
判斷字符串內容 --> isalnum()、isalpha()、isdigit()

#判斷是否全為數字 >>> a ="123" >>> a.isdigit() True >>> b ="a123" >>> b.isdigit() False #判斷是否全為字母 >>> d ="alx--e" >>> d.isalpha() False >>> c ="alex" >>> c.isalpha() True #判斷是否全為數字或者字母 >>> e ="abc123" >>> e.isalnum() True
大小寫轉換 --> capitalize()、lower()、upper()、title()、casefold()

#!/usr/bin/env python # -*- coding:utf-8 -*- #大小寫的互相轉換 >>> name ="little_five" #首字母大寫-->capitalize >>> name.capitalize() 'Little_five' #轉為標題-->title >>> info ="my name is little_five" >>> info.title() 'My Name Is Little_Five' #全部轉為小寫-->lower >>> name ="LITTLE_FIVE" >>> name.lower() 'little_five' #全部轉為大寫-->upper >>> name = "little_five" >>> name.upper() 'LITTLE_FIVE' #大小寫轉換-->swapcase >>> name ="lIttle_fIve" >>> name.swapcase() 'LiTTLE_FiVE'
判斷以什么開頭結尾 --> startswith()、endswith()

#判斷以什么開頭、結尾 >>> name ="little-five" #判斷以什么結尾 >>> name.endswith("e") True #判斷以什么開頭 >>> name.startswith("li") True
擴展-->expandtabs()

#expandtabs -->返回字符串中的 tab 符號('\t')轉為空格后生成的新字符串。通常可用於表格格式的輸出 info ="name\tage\temail\nlittlefive\t22\t994263539@qq.com\njames\t33\t66622334@qq.com" print(info.expandtabs(10)) #輸出為: name age email little-five 22 994263539@qq.com james 33 66622334@qq.com
格式化輸出-->format()、format_map()

#格式化輸出-->format、format_map #forma方法 #方式一 >>> info ="my name is {name},I'am {age} years old." >>> info.format(name="little-five",age=22) "my name is little-five,I'am 22 years old." #方式二 >>> info ="my name is {0},I'am {1} years old." >>> info.format("little-five",22) "my name is little-five,I'am 22 years old." #方式三 >>> info ="my name is {name},I'am {age} years old." >>> info.format(**{"name":"little-five","age":22}) "my name is little-five,I'am 22 years old." #format_map方法 >>> info ="my name is {name},I'am {age} years old." >>> info.format_map({"name":"little-five","age":22}) "my name is little-five,I'am 22 years old."
jion方法

#join--> join(): 連接字符串數組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串 #字符串 >>> name ="littefive" >>> "-".join(name) 'l-i-t-t-e-f-i-v-e' #列表 >>> info = ["xiaowu","say","hello","world"] >>> "--".join(info) 'xiaowu--say--hello--world'
分割 --> split()、partition()

#分割,有兩個方法-partition、split #partition -->只能將字符串分為三個部分,生成列表 >>> name ="little-five" >>> name.partition("-") ('little', '-', 'five') #split-->分割字符串,並且可以指定分割幾次,並且返回列表 >>> name ="little-five-hello-world" >>> name.split("-") ['little', 'five', 'hello', 'world'] >>> name.split("-",2) #指定分割幾次 ['little', 'five', 'hello-world'] >>>
替代 -->replace

#替代 >>> name ="little-five" >>> name.replace("l","L") 'LittLe-five' #也可以指定參數,替換幾個 >>> name.replace("i","e",2) 'lettle-feve' 清除空白 --> strip()、lstrip()、rstrip() #去除空格 >>> name =" little-five " #去除字符串左右兩邊的空格 >>> name.strip() 'little-five' #去除字符串左邊的空格 >>> name.lstrip() 'little-five ' #去除字符串右邊的空格 >>> name.rstrip() ' little-five'
替換 -->makestran 、translate

1 #進行一一替換 2 3 >>> a ="wszgr" 4 >>> b="我是中國人" 5 >>> v =str.maketrans(a,b) #創建對應關系,並且兩個字符串長度要求一致 6 >>> info ="I'm a Chinese people,wszgr" 7 >>> info.translate(v) 8 "I'm a Chine是e people,我是中國人"
4、列表 --->list類
列表是由一系列特定元素順序排列的元素組成的,它的元素可以是任何數據類型即數字、字符串、列表、元組、字典、布爾值等等,同時其元素也是可修改的。
其形式為:
1 names = ['little-five","James","Alex"] 2 #或者 3 names = list(['little-five","James","Alex"])
索引、切片

1 #索引-->從0開始,而不是從一開始 2 name =["xiaowu","little-five","James"] 3 print(name[0:-1]) 4 5 6 #切片-->負數為倒數第幾個,其為左閉右開,如不寫,前面表示包含前面所有元素,后面則表示后面所有元素 7 m1 =name[1:] 8 print(m1) 9 #輸出為-->['little-five', 'James'] 10 m2 =name[:-1] 11 print(m2) 12 #輸出為-->['xiaowu', 'little-five']
追加-->append()

1 #追加元素-->append() 2 name =["xiaowu","little-five","James"] 3 name.append("alex") 4 print(name) 5 6 #輸出為--》['xiaowu', 'little-five', 'James', 'alex']
拓展-->extend()

1 #擴展--》其將字符串或者列表的元素添加到列表內 2 #一、將其他列表元素添加至列表內 3 name =["xiaowu","little-five","James"] 4 name.extend(["alex","green"]) 5 print(name) 6 #輸出為-->['xiaowu', 'little-five', 'James', 'alex', 'green'] 7 8 #二、將字符串元素添加到列表內 9 name =["xiaowu","little-five","James"] 10 name.extend("hello") 11 print(name) 12 #輸出為-->xiaowu', 'little-five', 'James', 'alex', 'green', 'h', 'e', 'l', 'l', 'o'] 13 14 #三、將字典元素添加至列表內,注:字典的key。 15 name =["xiaowu","little-five","James"] 16 name.extend({"hello":"world"}) 17 print(name)
注:擴展extend與追加append的區別:-->前者為添加將元素作為一個整體添加,后者為將數據類型的元素分解添加至列表內。例:

1 #extend-->擴展 2 name =["xiaowu","little-five","James"] 3 name.extend(["hello","world"]) 4 print(name) 5 輸出為-->['xiaowu', 'little-five', 'James', 'hello', 'world'] 6 7 #append -->追加 8 name.append(["hello","world"]) 9 print(name) 10 輸出為 -->['xiaowu', 'little-five', 'James', ['hello', 'world']]
insert() -->插入

1 #insert()插入-->可以指定插入列表的某個位置,前面提到過列表是有序的 2 name =["xiaowu","little-five","James"] 3 name.insert(1,"alex") #索引從0開始,即第二個 4 print(name)
pop() -->取出

1 #pop()--取出,可將取出的值作為字符串賦予另外一個變量 2 name =["xiaowu","little-five","James"] 3 special_name =name.pop(1) 4 print(name) 5 print(special_name,type(special_name)) 6 7 #輸出為:['xiaowu', 'James'] 8 # little-five <class 'str'> 9
remove()-->移除、del -->刪除

1 #remove -->移除,其參數為列表的值的名稱 2 name =["xiaowu","little-five","James"] 3 name.remove("xiaowu") 4 print(name) 5 6 #其輸出為:['little-five', 'James'] 7 8 #del -->刪除 9 name =["xiaowu","little-five","James"] 10 #name.remove("xiaowu") 11 del name[1] 12 print(name) 13 14 #其輸出為:['xiaowu', 'James']
sorted()-->排序,默認正序,加入reverse =True,則表示倒序

1 #正序 2 num =[11,55,88,66,35,42] 3 print(sorted(num)) -->數字排序 4 name =["xiaowu","little-five","James"] 5 print(sorted(name)) -->字符串排序 6 #輸出為:[11, 35, 42, 55, 66, 88] 7 # ['James', 'little-five', 'xiaowu'] 8 9 #倒序 10 num =[11,55,88,66,35,42] 11 print(sorted(num,reverse=True)) 12 #輸出為:[88, 66, 55, 42, 35, 11]
5、元組 --->tuple類
元組即為不可修改的列表。其於特性跟list相似。其使用圓括號而不是方括號來標識。
#元組 name = ("little-five","xiaowu") print(name[0])
6、字典 --->dict類
字典為一系列的鍵-值對,每個鍵值對用逗號隔開,每個鍵都與一個值相對應,可以通過使用鍵來訪問對應的值。無序的。
鍵的定義必須是不可變的,即可以是數字、字符串也可以是元組,還有布爾值等。
而值的定義可以是任意數據類型。

#字典的定義 info ={ 1:"hello world", #鍵為數字 ("hello world"):1, #鍵為元組 False:{ "name":"James" }, "age":22 }
遍歷 -->items、keys、values

info ={ "name":"little-five", "age":22, "email":"99426353*@qq,com" } #鍵 for key in info: print(key) print(info.keys()) #輸出為:dict_keys(['name', 'age', 'email']) #鍵值對 print(info.items()) #輸出為-->dict_items([('name', 'little-five'), ('age', 22), ('email', '99426353*@qq,com')]) #值 print(info.values()) #輸出為:dict_values(['little-five', 22, '99426353*@qq,com'])
7、集合 -->set類
關於集合set的定義:在我看來集合就像一個籃子,你可以往里面存東西也可往里面取東西,但是這些東西又是無序的,你很難指定單獨去取某一樣東西;同時它又可以通過一定的方法篩選去獲得你需要的那部分東西。故集合可以 創建、增、刪、關系運算。
集合的特性:
1、去重
2、無序
3、每個元素必須為不可變類型即(hashable類型,可作為字典的key)。
創建:set、frozenset

1 #1、創建,將會自動去重,其元素為不可變數據類型,即數字、字符串、元組 2 test01 ={"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True} 3 #或者 4 test02 =set({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True}) 5 6 #2、不可變集合的創建 -->frozenset() 7 test =frozenset({"zhangsan","lisi","wangwu","lisi",666,("hello","world",),True})
增: add、update

#更新單個值 --->add names ={"zhangsan","lisi","wangwu"} names.add("james") #其參數必須為hashable類型 print(names) #更新多個值 -->update names ={"zhangsan","lisi","wangwu"} names.update({"alex","james"})#其參數必須為集合 print(names)
刪除:pop、remove、discard

#隨機刪除 -->pop names ={"zhangsan","lisi","wangwu","alex","james"} names.pop() print(names) #指定刪除,若要刪除的元素不存在,則報錯 -->remove names ={"zhangsan","lisi","wangwu","alex","james"} names.remove("lisi") print(names) #指定刪除,若要刪除的元素不存在,無視該方法 -->discard names ={"zhangsan","lisi","wangwu","alex","james"} names.discard("hello") print(names)
關系運算:交集 & 、並集 | 、差集 - 、交差補集 ^ 、 issubset 、isupperset
比如有兩個班英語班和數學班,我們需要統計這兩個班中報名情況,例如既報名了英語班有報名數學班的同學名字等等,這時候我們就可以應用到集合的關系運算:

english_c ={"ZhangSan","LiSi","James","Alex"} math_c ={"WangWu","LiuDeHua","James","Alex"} #1、交集--> in a and in b #統計既報了英語班又報了數學班的同學 print(english_c & math_c) print(english_c.intersection(math_c)) #輸出為:{'Alex', 'James'} #2、並集--> in a or in b #統計報名了兩個班的所有同學 print(english_c | math_c) print(english_c.union(math_c)) #輸出為:{'James', 'ZhangSan', 'LiuDeHua', 'LiSi', 'Alex', 'WangWu'} #3、差集--> in a not in b #統計只報名英語班的同學 print(english_c - math_c) print(english_c.difference(math_c)) #輸出為:{'LiSi', 'ZhangSan'} 4、交差補集 #統計只報名一個班的同學 print(english_c ^ math_c) #輸出為:{'LiuDeHua', 'ZhangSan', 'WangWu', 'LiSi'}
判斷兩個集合的關系是否為子集、父集 --> issubset 、isupperset

#5、issubset-->n 是否為 m 的子集 # issuperset --> n 是否為 m 的父集 n ={1,2,4,6,8,10} m ={2,4,6} l ={1,2,11} print(n >= m) #print(n.issuperset(m)) #n 是否為 m的父集 #print(n.issuperset(l)) print(m <=n) #print(m.issubset(n)) #m 是否為 n的子集