1. 程式人生 > >基礎數據類型總結

基礎數據類型總結

情況 個數 isdigit rom ever else oob count dig

一、數字類型

  一、int

    不可變數據類型(可哈希)

    數字主要是用於計算用的

  二、bool

    不可變數據類型(可哈希)

    布爾值值分為兩種:True ,False ,就是反應條件的正確與否

      真 1 True

      假 0 False

      int-->str str(int)

      str-->int int(str)

      int--->bool 0 代表false 非零代表True

      str--->bool 非空 為True ,空字符串就是False

      bool-->str 無意義 ,很少用到

  三、float

    不可變數據類型(可哈希)

    小數數字運算

  四、complex

    不可變數據類型(可哈希)

    復數運算

二、序列類型

  一、str

    不可變數據類型(可哈希)

    1、索引和切片

#索引與切片 s[起始索引:截止索引:步長]
s = 老男孩是最好的培訓機構
#索引
s1 = s[0]   
print(s1)   #
s2 = s[2]
print(s2)   #
#切片  顧頭不顧腚
s4 = s[0:3]
print(s4)   # 老男孩
s41 = s[:3]
print(s41)  # 老男孩
s6 = s[:]   #
老男孩是最好的培訓機構 print(s6) #步長 s7 = s[:5:2] # 老孩最 print(s7) s8 = s[:7:3] # 老是的 print(s8) # 反向步長 s7 = s[-1:-5:-1] # 構機訓培 print(s7)

    2、字符串常用方法

s = laonanHai
# 1、*** 首字母大寫,其他字母小寫
s1 = s.capitalize()
print(s1)   # Laonanhai

# 2、***全部大寫,全部小寫
s2 = s.upper()
s3 = s.lower()
print(s2,s3)    # LAONANHAI laonanhai
code = aeQu.upper() your_code = input(請輸入驗證碼).upper() if your_code == code: print(驗證碼輸入成功) # 3、 * 居中center s4 = s.center(30) print(s4) s4 = s.center(30,*) print(s4) # 4、**大小寫翻轉 s5 = s.swapcase() print(s5) # LAONANhAI s = alex wusir*laonanhai2taibai # 5、每個單詞的首字母大寫(非字母隔開) s6 =s.title() print(s6) # Alex Wusir*Laonanhai2Taibai s = alexlaonanhai # 6、***判斷以什麽為開頭,以什麽為結尾。 # startswith endswith() s7 = s.startswith(a) s71 = s.startswith(al) s72 = s.startswith(alex) s73 = s.startswith(alex) s74 = s.startswith(l, 4) print(s74) # True print(s7,s71,s72,s74) # True True True True s = laonanhai s = \nlaonanhai\t # 7、***去除首尾的空格,換行符,tab # 去除左邊的空格,換行符,tab lstrip() # 去除右邊的空格,換行符,tab rstrip() #strip() print(s) print(s.strip()) print(s.lstrip()) print(s.rstrip()) name = input(請輸入用戶名:).strip() if name == alex: print(666) s = ,laoxnanhaialexl print(s.strip(,lax)) # oxnanhaiale s = alexex # 8、*** find index 通過元素找索引 print(s.find(e)) # 2 print(s.find(e,3)) # 4(從索引3開始) print(s.find(A)) # -1 # print(s.index(‘A‘)) #執行報錯 s = alexex # 9、*** count 尋找元素出現的個數 可切片 print(s.count(e)) # 2 print(s.count(ex)) # 2 a1=ladsfaldfakd000lsd32320 ret3 = a1.count("a") # 可切片 print(ret3) # 3 # 10、***replace 替換 s = 將發生多了範德薩發範德薩回復 s1 = s.replace(範德薩, 小粉嫩) print(s1) # 將發生多了小粉嫩發小粉嫩回復 s2 = s.replace(範德薩, 小粉嫩,1) print(s2) # 將發生多了小粉嫩發範德薩回復 s3 = s.replace(範德薩, sb) print(s3) # 將發生多了sb發sb回復 # 11、***** split 分割 str ---> list s = alex wusir taibai print(s.split()) # [‘alex‘, ‘wusir‘, ‘taibai‘] s1 = alex,wusir,taibai print(s1.split(,)) # [‘alex‘, ‘wusir‘, ‘taibai‘] s2 = alexawusirataibai print(s2.split(a)) # [‘‘, ‘lex‘, ‘wusir‘, ‘t‘, ‘ib‘, ‘i‘] s3 = alexawusirataibai print(s3.split(a,1)) # 分割次數 [‘‘, ‘lexawusirataibai‘] # 12、***** format 格式化輸出 #三種用法 #第一種用法: s = 我叫{},今年{},愛好{}.format(MT,18,母牛) #第二種用法 s = 我叫{0},今年{1},愛好{2},我依然叫{0},今年還是{1} .format(MT,18,母牛) #第三種 鍵值對 s = 我叫{name},今年{age},愛好{hobby}.format(age=18, name=MT, hobby=悶兒) name=123a # 13、字符串由字母或數字組成,字符串只由字母組成,字符串只由數字組成 print(name.isalnum()) # 字符串由字母或數字組成 True print(name.isalpha()) # 字符串只由字母組成 False print(name.isdigit()) # 字符串只由數字組成 False if name.isdigit(): name = int(name) print(name,type(name)) else: print(您輸入的由非數字元素) # 14、casefold # 用法:S.casefold() # 意義:lower() 方法只對ASCII編碼,也就是‘A-Z’有效,對於其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用 casefold() 方法 # 用法: s = aBBex print(s.casefold()) # abbex # 15、expandtabs # 用法:S.expandtabs(tabsoze=8) # 意義:把字符串中的 tab 符號(‘\t‘)轉為空格,tab 符號(‘\t‘)默認的空格數是 8。 # 從頭開始數,數到第一個\t正好為8個空格,不足則補空格,如果還有\t,接著從第一個\t數到第二個\t仍然為8個空格,以此類推直到最後一個\t結束。 # 用法 S = "this is\tstring example....wow!!!" print("原始字符串: " + S) #原始字符串: this is string example....wow!!! print("替換 \\t 符號: " + S.expandtabs()) #替換 \t 符號: this is string example....wow!!! print("使用16個空格替換 \\t 符號: " + S.expandtabs(16)) #使用16個空格替換 \t 符號: this is string example....wow!!!

  二、list

    可變數據類型(不可哈希)

    註:對於list,在循環一個列表時,最好不要進行刪除的動作(一旦刪除,索引會隨之改變),容易出錯。

    1、索引、切片、步長

li = [alex,123,True,(1,23,34,wusir),[2412,234,xiaomin],{name:alex}]
#索引、切片、步長
print(li[0]) # alex
print(li[2]) # True
print(li[:4]) # [‘alex‘, 123, True, (1, 23, 34, ‘wusir‘)]
print(li[3:1:-1]) # [(1, 23, 34, ‘wusir‘), True]

    2、增

# 1、append 在列表最後加入元素,結果沒有返回值,直接修改列表
li.append(alex)
print(li) # [1, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘]
li.append([1,2,3])
print(li) # [1, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3]]
# 2、insert 插入 可以按索引插入
li.insert(2,sb)
print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3]]
# 3、extend 叠代添加,到最後
li.extend(214)
print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘]
li.extend([1,2,ab])
print(li) # [1, ‘a‘, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2, ‘ab‘]

    3、刪

li = [1, a, sb, b, a, 2, 3, 老男孩, alex, [1, 2, 3], 2, 1, 4, 1, 2, ab]
# 1、remove 按元素刪除
li.remove(a)
print(li) #[1, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2, ‘ab‘]
# 2、pop 按索引刪除,默認刪除最後一個,返回值是刪除的元素
print(li.pop()) # ab
print(li) #[1, ‘sb‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2]
print(li.pop(2)) # b
print(li) #[1, ‘sb‘, ‘a‘, 2, 3, ‘老男孩‘, ‘alex‘, [1, 2, 3], ‘2‘, ‘1‘, ‘4‘, 1, 2]
# 3、clear 清空列表內容
li.clear()
print(li) #[]
# 4、del 刪除列表或者切片刪除
li = [1,2,4,6]
# del li
print(li) # 列表不存在了
li = [1,a,b,a,2,3,老男孩]
# 切片刪除,可以按步長刪除
del li[3:]
print(li)   # [1, ‘a‘, ‘b‘]
li = [1,a,b,a,2,3,老男孩]
del li[:3:2]
print(li) # [‘a‘, ‘a‘, 2, 3, ‘老男孩‘]

    4、改

# 1、按照索引改
li = [1,a,b,a,2,3,老男孩]
li[0] = abc
print(li) # [‘abc‘, ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘]
li[0] = [abc,123,eta]
print(li) # [[‘abc‘, 123, ‘eta‘], ‘a‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘]
# 2、按照切片去改
li[:3] = sb
print(li) # [‘s‘, ‘b‘, ‘a‘, 2, 3, ‘老男孩‘]
li[:2] = [sb]
print(li) # [‘sb‘, ‘a‘, 2, 3, ‘老男孩‘]

    5、查

li = [sb, a, 2, 3, 老男孩]
# 1、查看,切片步長查看
print(li[0]) # sb
print(li[:2]) # [‘sb‘, ‘a‘]
print(li[::2]) # [‘sb‘, 2, ‘老男孩‘]
# 2、for 循環
for i in li:
    print(i)
# sb
# a
# 2
# 3

    6、其他操作

# 1、sort從小到大,正向排序
li = [23,21,43,1,54]
li.sort()
print(li) # [1, 21, 23, 43, 54]
# 2、從大到小,反向排序
li.sort(reverse =True)
print(li) # [54, 43, 23, 21, 1]
# 3、翻轉
li.reverse() # [1, 21, 23, 43, 54]
# 4、長度 len
print(len(li)) # 5
print(li) #[1, 21, 23, 43, 54]
# 5、count
li = [t,2342,t,safs,sadfast,eawt]
print(li.count(t)) # 2
#index 通過元素找索引
print(li.index(t)) # 0    沒有找到報錯
# 6、join用字符串做一個連接符
#連接可叠代對象中的每一個元素,形成一個新的字符串
s = xxoo.join(sb)
print(s) # sxxoob
l1 = [wusir,taibai]
print( .join(l1)) # wusir taibai
print(‘‘.join(l1)) # wusirtaibai

  三、tuple

    不可變數據類型(可哈希)

    元組被稱為只讀列表,即數據可以被查詢,但不能被修改,字符串的索引與切片操作同樣適用於元組

    :對於元組:如果只有一個元素,並且沒有逗號,此元素是什麽數據類型,該表達式就是什麽數據類型

tu = ([1,2,3])
tu1 = ([1,2,3],)
print(tu,type(tu))  # [1, 2, 3] <class ‘list‘>
print(tu1,type(tu1))    # ([1, 2, 3],) <class ‘tuple‘>

三、散列類型

  一、dict

    可變數據類型(不可哈希)

    字典的鍵:不可變數據類型,字典的值:任意數據類型

    註:在循環字典中,不能增加或者刪除此字典的鍵值對。

# 將字典中含有k元素的鍵,對應的鍵值對刪除。
dic = {k1:value1,k2:value2,name:wusir}
l1 = []
for i in dic:
    if k in i:
        l1.append(i)
for i in l1:
    del dic[i]
print(dic)

    1、增

# 1、有則覆蓋,無則添加
dic[hobby] = "girl"
print(dic) #{‘name‘: ‘jin‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘}
dic["name"] = alex
print(dic) #{‘name‘: ‘alex‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘}
# 2、setfault添加一個鍵值對,有則不變,無則添加。
dic.setdefault(name,sb)
print(dic) #{‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘alex‘, ‘hobby‘: ‘girl‘}
dic.setdefault(sb,sb)
print(dic) #{‘sb‘: ‘sb‘, ‘age‘: 18, ‘hobby‘: ‘girl‘, ‘name‘: ‘alex‘, ‘sex‘: ‘male‘}
# 3、fromkeys() 函數用於創建一個新字典,以序列seq中元素做字典的鍵,value為字典所有鍵對應的初始值 dict.fromkeys(seq[, value]))
dic = dict.fromkeys(abc,alex)
print(dic)  #{‘c‘: ‘alex‘, ‘a‘: ‘alex‘, ‘b‘: ‘alex‘}
dic = dict.fromkeys([1,2,3],[])
print(dic)  #{1: [], 2: [], 3: []}
dic[1].append(laonanhai)
print(dic)  #{1: [‘laonanhai‘], 2: [‘laonanhai‘], 3: [‘laonanhai‘]}

    2、刪

dic = {sb: sb,
       age: 18,
       hobby:girl,
       name: alex,
       sex: male}
# 1、pop 有返回值的刪除
print(dic.pop(sb)) # sb
print(dic) # {‘name‘: ‘alex‘, ‘age‘: 18, ‘sex‘: ‘male‘, ‘hobby‘: ‘girl‘}
print(dic.pop(hobby)) # girl
print(dic) # {‘sex‘: ‘male‘, ‘name‘: ‘alex‘, ‘age‘: 18}
print(dic.pop(a,沒有值)) # 如果刪除內容不存在後面可以加個返回值結果是沒有值
print(dic) # {‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘alex‘}
print(dic.pop(age,65))  # 有要刪除內容,返回刪除內容 18
print(dic) # {‘sex‘: ‘male‘, ‘name‘: ‘alex‘}
# 2、clear 清空
dic.clear()
print(dic) # {}
# 3、del 刪除列表,按鍵值刪除鍵值對
# del dic # 刪除字典
# print(dic) # 報錯,字典不存在了
dic = {"name":"jin",
       "age":18,
       "sex":"male",
       }
del dic[name]
print(dic) # {‘sex‘: ‘male‘, ‘age‘: 18}
print(dic.popitem()) # 隨機刪除,有返回值,返回的是刪的內容 (‘sex‘, ‘male‘)
print(dic) # {‘age‘: 18}

    3、改

# 1、直接修改
dic = {"name":"jin",
       "age":18,
       "sex":"male",
       }
dic[name] = sb
print(dic) # {‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘sb‘}
# 2、兩個字典的改
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 對dic2進行升級,把dic內容覆蓋到dic2中
print(dic2) # {‘weight‘: 75, ‘age‘: 18, ‘sex‘: ‘male‘, ‘name‘: ‘jin‘}
print(dic) # {‘sex‘: ‘male‘, ‘age‘: 18, ‘name‘: ‘jin‘}

    4、查

# 1、直接查找,如果不存在會報錯,推薦用get查找
dic = {sex: male, age: 18, name: jin}
print(dic["name"]) # jin
# print(dic[‘sb‘]) # 報錯
print(dic.get(name)) # jin
print(dic.get(sb)) # None 默認返回None
print(dic.get(sb,123344sdafasd)) # 123344sdafasd 可以後面定義返回值

    5、其他操作

# key() values() items()
dic = {sex: male, age: 18, name: jin}
print(dic.keys(),type(dic.keys())) #dict_keys([‘sex‘, ‘name‘, ‘age‘]) <class ‘dict_keys‘>
# 把鍵放在了一個類似列表的容器中,可循環,可轉化為列表
for i in dic.keys():
    print(i)
    # name
    # sex
    # age
# 把鍵值放在了一個類似列表的容器中,可循環,可轉化為列表
for i in dic.values():
    print(i)
    # 18
    # jin
    # male
# 把鍵值對放在了一個類似列表的容器中,可循環,可轉化為列表
for i in dic.items():
    print(i)
    # (‘age‘, 18)
    # (‘name‘, ‘jin‘)
    # (‘sex‘, ‘male‘)
# 特殊類型 dict 轉化成list
print(list(dic.keys())) #[‘sex‘, ‘age‘, ‘name‘]

  二、set

    不重復,無序,它裏面的元素是可哈希的。他本身是不可哈希的,他不能作為字典的key。

    作用:1,去重。

       2,數據關系的測試。

# 1、去重
li = [11,11,22,22,33,33,33,44]
li = list(set(li))
print(li)   #[33, 11, 44, 22]
set = {11,22,33,11,22,33,44}
print(set)  #{33, 11, 44, 22}

# 2、增
set1 = {alex,wusir,ritian,egon,barry}
set1.add(sb)
print(set1) #{‘sb‘, ‘barry‘, ‘egon‘, ‘ritian‘, ‘wusir‘, ‘alex‘}
set1.update(abc)
set1.update([1,2,3])    #叠代的增加
print(set1) #{‘sb‘, 1, 2, 3, ‘barry‘, ‘egon‘, ‘ritian‘, ‘a‘, ‘b‘, ‘wusir‘, ‘alex‘, ‘c‘}

# 3、刪
set1.remove(sb)
print(set1) #{‘c‘, 1, 2, ‘ritian‘, ‘wusir‘, 3, ‘barry‘, ‘b‘, ‘a‘, ‘alex‘, ‘egon‘}

set1.clear()
print(set1) #set()

del set1
# print(set1) #刪除了

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
# 4、交集 & intersection
print(set1 & set2)  #{4, 5}
print(set1.intersection(set2))  #{4, 5}
# 5、反交集 ^ symmetric_difference
print(set1^set2)    #{1, 2, 3, 6, 7, 8}
print(set.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8}
# 6、差集 | union
print(set1 | set2)  #{1, 2, 3, 4, 5, 6, 7, 8}
print(set1.union(set2)) #{1, 2, 3, 4, 5, 6, 7, 8}

set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1.issubset(set2))  # True 子集
print(set2.issuperset(set1))  # True set2 是set1的超集

set1 = {barry,"wusir"}
set2 = frozenset(set1)  # 把集合變成可哈希的,有序集合
print(set2,type(set2))  # frozenset({‘barry‘, ‘wusir‘}) <class ‘frozenset‘>

  python基礎數據類型思維導圖:https://www.processon.com/view/link/5ae735c0e4b039625af92020

基礎數據類型總結