python基礎(二)基礎數據類型
一,引子。
1 什麽是數據?
x=10,10是我們要存儲的數據
2 為何數據要分不同的類型
數據是用來表示狀態的,不同的狀態就應該用不同的類型的數據去表示
3 數據類型
數字
字符串
列表
元組
字典
集合
二基礎數據類型。
2.1數字int。
數字主要是用於計算用的,使用方法並不是很多,就記住一種就可以:
#bit_length() 當十進制用二進制表示時,最少使用的位數
v = 11
data = v.bit_length()
print(data)
2.2布爾值bool。
布爾值就兩種:True,False。就是反應條件的正確與否。
真 1 True。
假 0 False。
2.3字符串str。
2.3.1、字符串的索引與切片。
索引即下標,就是字符串組成的元素從第一個開始,初始索引為0以此類推。
a = ‘ABCDEFGHIJK‘
print(a[0])
print(a[3])
print(a[5])
print(a[7])
切片就是通過索引(索引:索引:步長)截取字符串的一段,形成新的字符串(原則就是顧頭不顧腚)。
a = ‘ABCDEFGHIJK‘
print(a[0:3])
print(a[2:5])
print(a[0:]) #默認到最後
print(a[0:-1]) #-1就是最後一個
print(a[0:5:2]) #加步長
print(a[5:0:-2]) #反向加步長
2.3.2、字符串常用方法。
#captalize,swapcase,title print(name.capitalize()) #首字母大寫 print(name.swapcase()) #大小寫翻轉 msg=‘egon say hi‘ print(msg.title()) #每個單詞的首字母大寫 # 內同居中,總長度,空白處填充 ret2 = a1.center(20,"*") print(ret2) #數字符串中的元素出現的個數。 # ret3 = a1.count("a",0,4) # 可切片 # print(ret3) a2 = "hqw\t" #\t前面的補全 #默認將一個tab鍵變成8個空格,如果tab前面的字符長度不足8個,則補全8個,如果tab鍵前面的字符長度超過8個不足16個則補全16個,以此類推每次補全8個。 ret4 = a2.expandtabs() print(ret4) a4 = "dkfjdkfasf54" #startswith 判斷是否以...開頭 #endswith 判斷是否以...結尾 # ret4 = a4.endswith(‘jdk‘,3,6) # 顧頭不顧腚 # print(ret4) # 返回的是布爾值 # ret5 = a4.startswith("kfj",1,4) # print(ret5) #尋找字符串中的元素是否存在 # ret6 = a4.find("fjdk",1,6) # print(ret6) # 返回的找到的元素的索引,如果找不到返回-1 # ret61 = a4.index("fjdk",4,6) # print(ret61) # 返回的找到的元素的索引,找不到報錯。 #split 以什麽分割,最終形成一個列表此列表不含有這個分割的元素。 # ret9 = ‘title,Tilte,atre,‘.split(‘t‘) # print(ret9) # ret91 = ‘title,Tilte,atre,‘.rsplit(‘t‘,1) # print(ret91) #format的三種玩法 格式化輸出 res=‘{} {} {}‘.format(‘egon‘,18,‘male‘) res=‘{1} {0} {1}‘.format(‘egon‘,18,‘male‘) res=‘{name} {age} {sex}‘.format(sex=‘male‘,name=‘egon‘,age=18) #strip name=‘*egon**‘ print(name.strip(‘*‘)) print(name.lstrip(‘*‘)) print(name.rstrip(‘*‘)) #replace name=‘alex say :i have one tesla,my name is alex‘ print(name.replace(‘alex‘,‘SB‘,1)) #####is系列 name=‘jinxin123‘ print(name.isalnum()) #字符串由字母或數字組成 print(name.isalpha()) #字符串只由字母組成 print(name.isdigit()) #字符串只由數字組成
2.4元祖tupe。
元組被稱為只讀列表,即數據可以被查詢,但不能被修改,所以,字符串的切片操作同樣適用於元組。例:(1,2,3)("a","b","c")
2.5列表list。
列表是python中的基礎數據類型之一,其他語言中也有類似於列表的數據類型,比如js中叫數組,他是以[]括起來,每個元素以逗號隔開,而且他裏面可以存放各種數據類型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比於字符串,不僅可以儲存不同的數據類型,而且可以儲存大量數據,32位python的限制是 536870912 個元素,64位python的限制是 1152921504606846975 個元素。而且列表是有序的,有索引值,可切片,方便取值。
2.5.1、增。
li = [1,‘a‘,‘b‘,2,3,‘a‘] # li.insert(0,55) #按照索引去增加 # print(li) # # li.append(‘aaa‘) #增加到最後 # li.append([1,2,3]) #增加到最後 # print(li) # # li.extend([‘q,a,w‘]) #叠代的去增 # li.extend([‘q,a,w‘,‘aaa‘]) # li.extend(‘a‘) # li.extend(‘abc‘) # li.extend(‘a,b,c‘) # print(li)
2.5.2、刪。
# l1 = li.pop(1) #按照位置去刪除,有返回值 # print(l1) # del li[1:3] #按照位置去刪除,也可切片刪除沒有返回值。 # print(li) # li.remove(‘a‘) #按照元素去刪除 # print(li) # li.clear() #清空列表
2.5.3、改。
# 改 # li = [1,‘a‘,‘b‘,2,3,‘a‘] # li[1] = ‘dfasdfas‘ # print(li) # li[1:3] = [‘a‘,‘b‘] # print(li)
2.5.4、查。
切片去查,或者循環去查。
2.5.5、其他操作。
count(數)(方法統計某個元素在列表中出現的次數)。
1 a = ["q","w","q","r","t","y"] 2 print(a.count("q"))
index(方法用於從列表中找出某個值第一個匹配項的索引位置)
1 a = ["q","w","r","t","y"] 2 print(a.index("r"))
sort (方法用於在原位置對列表進行排序)。
reverse (方法將列表中的元素反向存放)。
1 a = [2,1,3,4,5] 2 a.sort()# 他沒有返回值,所以只能打印a 3 print(a) 4 a.reverse()#他也沒有返回值,所以只能打印a 5 print(a)
2.6字典dict。
字典是python中唯一的映射類型,采用鍵值對(key-value)的形式存儲數據。python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字符串、元組。
字典(dictionary)是除列表意外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
2.6.1、增。
# dic[‘li‘] = ["a","b","c"] # print(dic) # setdefault 在字典中添加鍵值對,如果只有鍵那對應的值是none,但是如果原字典中存在設置的鍵值對,則他不會更改或者覆蓋。 # dic.setdefault(‘k‘,‘v‘) # print(dic) # {‘age‘: 18, ‘name‘: ‘jin‘, ‘sex‘: ‘male‘, ‘k‘: ‘v‘} # dic.setdefault(‘k‘,‘v1‘) # {‘age‘: 18, ‘name‘: ‘jin‘, ‘sex‘: ‘male‘, ‘k‘: ‘v‘} # print(dic)
2.6.2、刪。
# dic_pop = dic.pop("a",‘無key默認返回值‘) # pop根據key刪除鍵值對,並返回對應的值,如果沒有key則返回默認返回值 # print(dic_pop) # del dic["name"] # 沒有返回值。 # print(dic) # dic_pop1 = dic.popitem() # 隨機刪除字典中的某個鍵值對,將刪除的鍵值對以元祖的形式返回 # print(dic_pop1) # (‘name‘,‘jin‘) # dic_clear = dic.clear() # 清空字典 # print(dic,dic_clear) # {} None
2.6.3、改。
# 改 # dic = {"name":"jin","age":18,"sex":"male"} # dic2 = {"name":"alex","weight":75} # dic2.update(dic) # 將dic所有的鍵值對覆蓋添加(相同的覆蓋,沒有的添加)到dic2中 # print(dic2)
2.6.4、查。
# value1 = dic["name"] # 沒有會報錯 # print(value1) # # value2 = dic.get("djffdsafg","默認返回值") # 沒有可以返回設定的返回值 # print(value2)
2.6.5、其他操作。
# item = dic.items() # print(item,type(item)) # dict_items([(‘name‘, ‘jin‘), (‘sex‘, ‘male‘), (‘age‘, 18)]) <class ‘dict_items‘> # 這個類型就是dict_items類型,可叠代的 # keys = dic.keys() # print(keys,type(keys)) # dict_keys([‘sex‘, ‘age‘, ‘name‘]) <class ‘dict_keys‘> # values = dic.values() # print(values,type(values)) # dict_values([‘male‘, 18, ‘jin‘]) <class ‘dict_values‘> 同上
字典的循環。
# dic = {"name":"jin","age":18,"sex":"male"}
# for key in dic:
# print(key)
# for item in dic.items():
# print(item)
# for key,value in dic.items():
# print(key,value)
三,基礎數據類型的總結
按存儲空間的占用分(從低到高)
數字 字符串 集合:無序,即無序存索引相關信息 元組:有序,需要存索引相關信息,不可變 列表:有序,需要存索引相關信息,可變,需要處理數據的增刪改 字典:無序,需要存key與value映射的相關信息,可變,需要處理數據的增刪改
按存值個數區分
標量/原子類型 | 數字,字符串 |
容器類型 | 列表,元組,字典 |
按可變不可變區分
可變 | 列表,字典 |
不可變 | 數字,字符串,元組,布爾值 |
按訪問順序區分
直接訪問 | 數字 |
順序訪問(序列類型) | 字符串,列表,元組 |
key值訪問(映射類型) | 字典 |
四,其他(for,enumerate,range)。
for循環:用戶按照順序循環可叠代對象的內容。
msg = ‘老男孩python是全國範圍內最好的python培訓機構‘
for item in msg:
print(item)
li = [‘alex‘,‘銀角‘,‘女神‘,‘egon‘,‘太白‘]
for i in li:
print(i)
dic = {‘name‘:‘太白‘,‘age‘:18,‘sex‘:‘man‘}
for k,v in dic.items():
print(k,v)
enumerate:枚舉,對於一個可叠代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
li = [‘alex‘,‘銀角‘,‘女神‘,‘egon‘,‘太白‘]
for i in enumerate(li):
print(i)
for index,name in enumerate(li,1):
print(index,name)
for index, name in enumerate(li, 100): # 起始位置默認是0,可更改
print(index, name)
range:指定範圍,生成指定數字。
for i in range(1,10):
print(i)
for i in range(1,10,2): # 步長
print(i)
for i in range(10,1,-2): # 反向步長
print(i)
python基礎(二)基礎數據類型