1 python數(shù)據(jù)類型
Python中有六個標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字)狡相,String(字符串)呀癣,List(列表),Tuple(元組)输莺,Set(集合)戚哎,Dictionary(字典)。其中:Number(數(shù)字)嫂用、String(字符串)型凳、Tuple(元組)是不可變數(shù)據(jù),其余三種是可變數(shù)據(jù)嘱函。
轉(zhuǎn)義字符
\n 表示換行
\t 表示制表符
\ 表示\
#轉(zhuǎn)義字符
print ('It\'s a dog!')
print ("hello world!\nhello Python!")#換行
print ('\\\t\\')
print (r'\\\t\\')#使用在引號前加r甘畅,原樣輸出引號內(nèi)字符串
輸出結(jié)果
It's a dog!
hello world!
hello Python!
\ \
\\\t\\
布爾值
布爾值是一個邏輯值,只有真(True)和假(False)
e = True
f = False
print(type(e))
print(type(f))
s = 'Python'
print( 'Py' in s)
print( 'py' in s)
輸出結(jié)果
<class 'bool'>
<class 'bool'>
True
False
2 python數(shù)據(jù)結(jié)構(gòu)
Python數(shù)據(jù)結(jié)構(gòu)包括列表(list)往弓、元組(tuple)疏唾、集合(set)、字典(dict)等函似,這里主要講解列表槐脏,列表有兩個特點:
- 序列中的所有元素都是有自己的編號的——從0開始遞增。
- 列表是用來存儲一連串元素的容器缴淋,用中括號[]來表示准给,列表中元素的類型可不相同。
list = [0, 1, 2, 3, 4, 5]
print (list)
########索引
## 注意:索引從0開始重抖,含左不含右
print ('[4]=',list[4])
print ('[-4]=',list[-4])
print ('[0:4]=',list[0:4])
print ('[:4]=',list[:4])#dddd
print( '[4:]=',list[4:])
print ('[0:4:2]=',list[0:4:2])
print ('[-5:-1:]=',list[-5:-1:])
print ('[-2::-1]=',list[-2::-1])
輸出結(jié)果
[0, 1, 2, 3, 4, 5]
[4]= 4
[-4]= 2
[0:4]= [0, 1, 2, 3]
[:4]= [0, 1, 2, 3]
[4:]= [4, 5]
[0:4:2]= [0, 2]
[-5:-1:]= [1, 2, 3, 4]
[-2::-1]= [4, 3, 2, 1, 0]
修改表中元素
list[3] = "True"
print (list[3])
list[5]="HELLO"
print (list[5])
list[5]=2021
print (list[5])
print (list)
輸出結(jié)果
True
HELLO
2021
[0, 1, 2, 'True', 4, 2021]
列表中插入元素
#注意重復(fù)運行可在原結(jié)果上再次執(zhí)行命令
list.append('NAME') # 添加到尾部
list.extend(['WAN', 'LI'])#尾部 extend也是添加在尾部
print (list)
age = [90, 80, 75, 66]
list.insert(1, age) # 將[90, 80, 75, 66]添加到第一個元素0后面
list
輸出結(jié)果
[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
[0, [90, 80, 75, 66], 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
輸出列表中的元素
print (list.pop(1)) # 該函數(shù)返回被彈出的元素露氮,不傳入?yún)?shù)則默認(rèn)刪除最后一個元素。注意讀取順序0開始
print (list)
輸出結(jié)果
[90, 80, 75, 66]
[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
元素是否在列表元素中及統(tǒng)計個數(shù)
print( 'WAN' in list)
print ('WU' not in list)
list.count('WAN')
list
輸出結(jié)果
True
True
1
查找某個元素在列表中的位置
##注意修改后列表中元素變動
print(list)
list.index('LI')
輸出結(jié)果
[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
8
3 Python控制流
- python中有三種控制流類型:順序結(jié)構(gòu)钟沛、分支結(jié)構(gòu)畔规、循環(huán)結(jié)構(gòu)。
- 在python中通常情況下程序按從上往下的順序執(zhí)行語句恨统,而某些時候我們?yōu)榱烁淖兂绦虻膱?zhí)行順序叁扫,使用控制流語句控制程序執(zhí)行方式。
- python分隔語句一般用換行來分隔畜埋,語塊使用Tab鍵(即空格)縮進(jìn)而不用大括號莫绣。
順序結(jié)構(gòu)
#按順序運算
s = '7'
num = int(s) # 一般不使用這種分隔方式
num -= 1 # num = num - 1
num *= 6 # num = num * 6
print (num)
輸出結(jié)果
6
if 條件 1
#分支結(jié)構(gòu)
#Python中if語句是用來判斷選擇執(zhí)行哪個語句塊的
##條件判斷1
a = 1
b = 1.0
if a == b: ###一個等號表示賦值,兩個表示判斷
print("you are right!")
else:
print("you are wrong!")
輸出結(jié)果
you are right
if 條件 2
#條件判斷2(可以多個判斷條件elif)
#多個分支
a = 1
if a == 1:
print("a = 1")
elif a == 2:
print("a = 2")
else:
print("other") #輸出a=1 悠鞍,如果a不等于那幾個就輸出other
輸出結(jié)果
a = 1
循環(huán)結(jié)構(gòu)
#for 循環(huán) for (條件變量) in (集合):
#其中“集合”并不單指set对室,而是“形似”集合的列表、元組、字典掩宜、數(shù)組都可以進(jìn)行循環(huán)
names = ["san","si","mazi"]
for name in names:
print(name)
輸出結(jié)果
san
si
mazi
循環(huán)語句求和
total = 0
for i in range(1, 101):
total += i #total=total+i
print (total)
輸出結(jié)果
5050
4 列表 元組 集合 字典區(qū)別和用法
4.1 列表
可重復(fù)蔫骂,類型可不同。類型不同也是跟數(shù)組最本質(zhì)的區(qū)別牺汤。python里的列表用“[]”表示:
names = ["4ZhangYang", "#!Guyun","xXiangPeng","jack","ChenRonghua","XuLiangchen"]
print(names[0]) # 取下標(biāo)0的值
print(names[-1]) #取最后一個值
print(names[-2:]) # 倒數(shù)第二個取到結(jié)尾
print(names[1:3]) #取的是下標(biāo)1和2 的值辽旋,取左不取右
print(names[0:-1]) # 從下標(biāo)0取到倒數(shù)第二個
print(names[0:]) # 等價print(names[:]) 所有
print(names[0:3]) # 等價print(names[:3]) 開始0取到第三個
print(names[0:-1:2]) # 0到-1之間,每隔一個元素檐迟,就取一個
print(names[::2]) # 后面的2是表明补胚,每隔一個元素,就取一個
對比a和b的結(jié)果
a = [1,2,3]
b = a
a[1] = 555 #下標(biāo)1是555
b = [1,555,3]
print("list_a = ",a) #lst是用中括號
print("list_b = ",b)
import copy
#names = "ZhangYang Guyun Xiangpeng XuLiangChen"
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"] #可以列表套列表
name2 = copy.deepcopy(names) # 深度copy锅减,徹底的把names 復(fù)制給name2,修改names對name2無影響糖儡。
#name2 = names.copy() # 淺淺copy,只copy第一層怔匣,修改names 的第二層元素值握联,會影響name2 的第二層的值
#name2 = names # 直接復(fù)制,修改names每瞒,就會影響name2金闽,指向的同一塊地址。
print(names)
print(name2)
names[2] = "向鵬"
names[3][0] ="ALEXANDER" # 下標(biāo)3 也是一個list剿骨,取下標(biāo)3的第0個下標(biāo)
print(names)
print(name2)
列表的 --- 增 -- 刪 -- 改 -- 查
# 列表的 --- 增 -- 刪 -- 改 -- 查
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]
names.append("LeiHaidong") #在最后面添加
names.insert(1,"ChenRonghua") #在下標(biāo)1后面插入
names[2] ="XieDi" #修改下標(biāo)2的值
#delete
names.remove("ChenRonghua") #如果存在多個重復(fù)代芜,只刪除第一個重復(fù)值
del names[1] # 等價 names.pop(1) 刪除下標(biāo)1的值
del names #刪除names, 就是不存在了浓利,若是在使用print(names)打印就會報錯
print(names)
print(names.index("XieDi")) #顯示XieDi的下標(biāo)索引
print( names[names.index("XieDi")] )#顯示顯示XieDi的下標(biāo)索引的值XieDi
print(names.count("ChenRonghua")) #計數(shù)個數(shù)
names.clear() # 清空names里面的元素挤庇,注意區(qū)別和del names 的區(qū)別,但列表仍然存在
names.reverse() #反向列表中元素。
a=[1,23]
#list.sort(cmp=None, key=None, reverse=False) 默認(rèn)是false升序
a.sort() #sort進(jìn)行排序必須是整數(shù)才可以贷掖,要不然會報錯嫡秕。
a
names2 = [1,2,3,4]
#list.extend(seq) seq是元素列表,在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表).
names.extend(names2)
names
循環(huán)輸出列表內(nèi)容苹威,在結(jié)尾添加指定的內(nèi)容
#循環(huán)輸出列表內(nèi)容昆咽,在結(jié)尾添加指定的內(nèi)容
names2 = [1,2,3,4]
for x in names2:
print(x,"\n")
print("\n")
for x in [1, 2, 3]:
print(x, end="1") # 輸出的內(nèi)容結(jié)尾添加1
4.2 字符串
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號('或")來創(chuàng)建字符串牙甫。
name = "WOSHISHUI"
name.capitalize() # 首字母大寫,其它字母所有變小寫
name.casefold() # 大寫所有變小寫
name.center(20,"-") # 輸出 '-----WOSHISHUI------'掷酗,將字符串放在中間
name.count('SHI') # 統(tǒng)計 SHI出現(xiàn)次數(shù)
name.encode() # 將字符串編碼成bytes格式
name.endswith("Li") # 判斷字符串是否以 Li結(jié)尾,返回布爾值
print("woshi\tshui".expandtabs(10)) # 輸出'woshi shui'窟哺, 將\t轉(zhuǎn)換成多長的空格
print(name.find('A')) # 查找A,找到返回其索引泻轰, 找不到返回-1
4.3 元組
元組與列表相似,不一樣之處在于元組的元素不能修改且轨。
元組使用小括號糕殉,列表使用方括號亩鬼。
元組建立很簡單殖告,只須要在括號中添加元素阿蝶,并使用逗號隔開便可。
tup1 = ("Google", "Runoob", 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])
# 如下修改元組元素操做是非法的黄绩。
#tup1[0] = 100
# 報錯:TypeError: 'tuple' object does not support item assignment
# 建立一個新的元組
tup3 = tup1 + tup2;
print(tup3)
print(len(tup3)) # 輸出元組元素個數(shù)
#刪除元組 - 不能刪除指定的下標(biāo)羡洁,只能整個刪除
del tup1
#------- 元素函數(shù) -----------------
tuple1 = ('Google', 'Runoob', 'Taobao') # 計算元組元素個數(shù)。
print(len(tuple1))
tuple1 = ('5', '4', '9') # 返回元組中元素最大值爽丹。
print(max(tuple1))
tuple1 = ('5', '4', '9') # 返回元組中元素最小值筑煮。
print(min(tuple1))
list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] # 將列表轉(zhuǎn)換為元組。
tuple1=tuple(list1)
print(tuple1)
4.4 字典
字典是另外一種可變?nèi)萜髂P驮列铱纱鎯θ我忸愋蛯ο蟆?br>
字典的每一個鍵值(key=>value)對用冒號(:)分割真仲,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式以下所示:
d = {key1 : value1, key2 : value2 }
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Name']: ", dict['Name']) #就是直接取值
print("dict['Age']: ", dict['Age'])
#------ 修改字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Name'] = "test" # 添加信息
dict['Age'] = 8 # 更新 Age
print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])
# ----- 刪除字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 刪除鍵 'Name'
print(dict)
dict.clear() # 清空字典
print(dict)
del dict # 刪除字典
print(dict["Name"]) #會報錯初澎,因為已經(jīng)刪除
字典函數(shù)
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(len(dict)) #計算字典元素個數(shù)秸应,即鍵的總數(shù)。
print(str(dict)) #輸出字典碑宴,以可打印的字符串表示软啼。
print(dict) #和上述str(dict)一樣
type(dict) #返回輸入的變量類型,若是變量是字典就返回字典類型延柠。
1 radiansdict.clear()
刪除字典內(nèi)全部元素
2 radiansdict.copy()
返回一個字典的淺復(fù)制
3 radiansdict.fromkeys()
建立一個新字典祸挪,以序列seq中元素作字典的鍵,val為字典全部鍵對應(yīng)的初始值
4 radiansdict.get(key, default=None)
返回指定鍵的值贞间,若是值不在字典中返回default值
5 key in dict
若是鍵在字典dict里返回true贿条,不然返回false
6 radiansdict.items()
以列表返回可遍歷的(鍵, 值) 元組數(shù)組
7 radiansdict.keys()
返回一個迭代器,可使用 list() 來轉(zhuǎn)換為列表
8 radiansdict.setdefault(key, default=None)
和get()相似, 但若是鍵不存在于字典中增热,將會添加鍵并將值設(shè)為default
9 radiansdict.update(dict2)
把字典dict2的鍵/值對更新到dict里
10 radiansdict.values()
返回一個迭代器整以,可使用 list() 來轉(zhuǎn)換為列表
11 pop(key[,default])
刪除字典給定鍵 key 所對應(yīng)的值,返回值為被刪除的值钓葫。key值必須給出悄蕾。 不然,返回default值础浮。
12 popitem()
隨機返回并刪除字典中的最后一對鍵和值帆调。
4.5 集合
集合(set)是一個無序的不重復(fù)元素序列。
可使用大括號 { } 或者 set() 函數(shù)建立集合豆同,注意:建立一個空集合必須用 set() 而不是 { }番刊,由于 { } 是用來建立一個空字典。
它的主要做用以下: 1.去重影锈,把一個列表變成集合芹务,就自動去重了蝉绷。2.關(guān)系測試,測試兩組數(shù)據(jù)以前的交集枣抱、差集熔吗、并集等關(guān)系。
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) ##這里演示的是去重功能,只會輸出沒有重復(fù)的元素
print("orange" in basket) # 判斷元素是否在集合內(nèi) 返回true 佳晶、 false
#s = set([3,5,9,10]) # 建立一個數(shù)值集合
#s = set((3,5,9,10)) # 建立一個數(shù)值集合
s = set({3,5,9,10}) # 建立一個數(shù)值集合 用()桅狠,[],{}建立集合都可以
print(s)
type(s)
t = set("Hello") # 建立一個唯一字符的集合
print(t) #這里就會去重,剩下一個l
print(type(t))
t=set(['HELLO','12',1]) #如果是這樣就會把hello當(dāng)成一個元素來看
t
關(guān)系測試
t = set("Hello")
s = set({3,5,9,10})
a = t | s # t 和 s的并集
print("a = ",a)
b = t & s # t 和 s的交集
print("b = ",b)
c = t - s # 求差集(項在t中轿秧,但不在s中)
print("c = ",c)
d = t ^ s # 對稱差集(項在t或s中中跌,但不會同時出現(xiàn)兩者中)
print("d = ",d)
輸出結(jié)果
a = {3, 5, 'l', 9, 'e', 10, 'H', 'o'}
b = set()
c = {'e', 'H', 'o', 'l'}
d = {3, 5, 'l', 9, 10, 'e', 'H', 'o'}
元素的添加和刪除
s.add(1) # 添加一個元素
print(s)
s.update([1,2,'3xx']) # 添加多個元素
print(s)
#s.remove("10sdsd") # 移除一個元素,不存在會發(fā)生報錯
#print(s)
s.pop() # 隨機 移除一個元素
print(s)
print(len(s)) # 輸出 集合元素個數(shù)
s.clear() # 清空
print(s)
print( "x" in s) # 查找x 是否在s 集合里面,存在返回ture
print( "x" not in s) # 查找x 不在s 集合里面,不在返回true