基础知识:数字、字符串、列表 的类型及内置方法
閱讀目錄
今日學習內容:
- 基本數據類型及內置方法
1、數字類型
2、字符串類型
3、列表類型
今天學習的內容比較細比較雜,需要一點一點嚼爛慢慢消化,別急,加油!ヾ(?°?°?)ノ゙
=============================================================
一、可變不可變類型:
可變類型:值改變,id不變,也就是說在不改變id的情況下可以改變值,id地址不變。就是可變類型。
不可變類型:值改變,id也會隨著改變,證明就是產生了新值,開辟了新的id空間存放新值。這種就是不可變類型,在id原值的基礎上對應值不可改變,只能另辟新的id空間存放新值,而不能在原id地址上對對應值進行變更。
--------------------------------------------------------------------注:如果你對python感興趣,我這有個學習Python基地,里面有很多學習資料,感興趣的+Q群:895817687 -------------------------------------------------------------------x = 1 print(id(x)) x = 2 print(id(x))>>>>>>結果是2個值的對應id不同,發生了改變。x = [1, 2] print(id(x)) x[0] = 'A' # 將列表索引0的數值改變替換為A,我們會發現列表的id值仍然不變 print(id(x))二、數字類型:
1 int整型:int只能將純數字的類型轉成整型。
age = 10 # age = int(10) a = '1234' # int(a),會把字符串類型a轉換成整型1234 b = '1234 ' # int(b)會報錯,int無法轉換為整型 c = '123abc' # int(c)會報錯,int無法轉換為整型 # int只能轉換純數字類型的字符串2 float浮點型:float只能將純帶小數的字符串類型數據轉換成浮點型。
總結:int和float類型統稱為數字類型,該類型數據為不可變類型,只能存一個值。
三、字符串類型:
當我們定義一個字符串的時候其實是這樣的
msg = ‘hello’ # msg = str(‘hello’),也就是將hello數據變成字符串類型,然后關聯給msg。
由于字符串屬于一種記錄描述性質狀態的類型,所以,任何類型的變量都能轉換成字符串類型。
a = 1 b = 1.1 c = ['a', 'b'] d = {'c': 'sgt', 'd': 18, 'dd': 'tea'} A, B, C, D = [str(a), str(b), str(c), str(d)] print(A, B, C, D) print(type(A), type(B), type(C), type(D))1 1.1 ['a', 'b'] {'c': 'sgt', 'd': 18, 'dd': 'tea'} <class 'str'> <class 'str'> <class 'str'> <class 'str'>常用操作+內置的方法(*****):
3.1按索引取值(正向、反向取值)
# ---->正向: 0 1 2 3 4 # h e l l o # -5 -4 -3 -2 -1 反向<------- msg = 'hello' print(msg[0],msg[4],msg[-1],msg[-4])結果是:h o o e正向取值從索引0開始,反向取值從索引-1開始
注意:字符串取出的值,只能當做變量值,不可作為變量名。
3.2切片(顧頭不顧尾,步長)
msg = 'hello world' print(msg[2:4:1]) # 起始索引位置2,結束索引位置,顧頭不顧尾,步長1,所以結果:ll print(msg[0:5]) # 起始索引位置0,結束索引位置5,顧頭不顧尾,步長沒有默認為1,所以結果:hello print(msg[:]) # hello world print(msg[::2]) # hlowrd print(msg[::-1]) # 反向切片,dlrow olleh print(msg[-1::]) # 起始位置最右邊d,默認步長為1,所以結果只有 d print(msg[-1::-1]) # dlrow olleh3.3長度len()
msg = 'hello world'print(len(msg)) # 結果11計算字符串內索引總個數。
3.4成員運輸in 、not in 判斷小字符串是否存在于一串大字符串中。
msg = 'egon is my fantastic person' print('fan'in msg) print('rs' not in msg) print(not 'egon' not in msg) # True # False # True3.5 .strip 移除空白
用來去除字符串左右兩邊的字符,不指定的話,默認移除空格。
print(' message '.strip()) print(' messa ge '.strip()) print('abc dmessage dxyz h'.strip('abcdxyzh ')) # message # messa ge # messagestrip可用于用戶交互輸入數據時,如果數據中包含了無用的空格,這時就得進行去除空格處理
name = input('your username:').strip() pwd = input('your key:').strip() if name == 'sgt' and pwd == '123':print('登陸成功') else:print('登陸失敗')3.6切分 .split
按照某種分隔符,切分成列表。
info = 'a:b:c:d' print(info.split(':')) print(info.split(':',2))# ['a', 'b', 'c', 'd'] # ['a', 'b', 'c:d'] #jion使用:':'.jion(msg1) 用冒號(冒號可替換字符)作為連接符,將純字符串的列表拼接成一個新的字符串 msg1 = ['my', 'age', 'is', '18'] msg2 = ':'.join(msg1) print(msg2, type(msg2))# my:age:is:18 <class 'str'>切分的列表必須是純字符串列表
3.7循環(取值)
for x in 'hello'print(x) ''' h e l l o '''3.8以下是需要掌握的操作:
① .strip .lstrip .rstrip 兩邊去*,左邊去*,右邊去*
print('*******login*******'.strip('*')) print('*******login*******'.lstrip('*')) print('*******login*******'.rstrip('*'))# login # login******* # *******login② .lower .upper 將字母全部變為小寫,或者大寫
print('Ab2cD'.lower()) print('Ab2Cd'.upper()) # ab2cd # AB2CD③ .startswith .endswith 判斷是否以某種字符開頭或者結尾。
info = 'egon alex sgt' print(info.startswith('egon')) print(info.startswith('e')) print(info.endswith('gt')) print(info.endswith('t')) # True # True # True # True④ .format的玩法:
通常我們用到format會先說說以前學的格式化輸出:
name = 'egon' age = '18' print('my name is %s,i am %s .' %(name,age))然而這種輸出有一種局限就是必須是按照前后循序依次對號入座,那么有沒有一種不需要按順序來,直接就能快速入座的輸出呢?
format就可以做到:
print('my name is {name},i am {age} .'.format(name='egon',age='18'))還有另外2種表達:
print('my name is {},i am {} .'.format('egon','18')) print('my name is {0}{1},i am {1}{1} .'.format('egon', '18'))# my name is egon,i am 18 . # my name is egon18,i am 1818 .運用.format快速格式化輸入:
name = input('請輸入您的姓名:') age = input('請輸入您的年齡:') job = input('請輸入您的工作:') sex = input('請輸入您的性別:') print(''' ---------------info {a}--------------- Name : {a} Age : {b} Sex : {c} Job : ozvdkddzhkzd ---------------end---------------''' .format(a=name, b=age, c=sex, d=job))⑤ .split . rsplit 切分成列表(0默認從左開始),右切分
info = 'a:b:c:d' print(info.rsplit(':')) print(info.rsplit(':',2)) # ['a', 'b', 'c', 'd'] # ['a:b', 'c', 'd']⑥ .replace
用法:info.replace('被替換的字符串’,‘替換成的字符串’,替換個數)
info = 'a fantastic man is sgt' print(info.replace('sgt','yl',1))# a fantastic man is yl⑦ .isdigit判斷
如果字符串由純數字組成則返回True
print('12345'.isdigit()) print('1234 5'.isdigit()) print('12345 '.isdigit()) print('12345abc'.isdigit()) # True # False # False # False while True:score = input('>>>>:').strip()if score.isdigit():score=int(score)if score > 90:print('great!')else:print('rubbish!')breakelse:print('請輸入純數字')可以用于用戶交互界面,首先將輸入字符串取空白,然后轉成數字類型,然后判斷是否輸入的是數字,如果是可進行下一步判斷,如果不是,重新輸入
⑧需要了解的操作:
#1find rfind index rindex count
print('123 ke123ke'.find('ke')) #4 print('123 ke123ke'.rfind('ke')) # 9 print('123 ke123ke'.index('ke')) #4 print('123 ke123ke'.rindex('ke')) #9 print('123 ke123ke'.count('ke',0,6)) #1find和index的區別是找不到的時候,find結果是-1,二index結果是報錯 print('123 ke123ke'.find('xxxx')) #-1 print('123 ke123ke'.index('xxxx')) #報錯print('123 ke123ke'.count('ke',0,6)) #1 #計數,尋找計數字符串,從索引0開始到索引6如果找到一個ke就計1,如果找到2個就計2,以此類推。#2center ljust rjust zfill
print('egon'.center(11,'*')) # 將egon放到總數為11個字符中間(50個字符包含egon的數量),其他用*號填充。****egon*** print('egon'.ljust(11,'*')) # 將egon放到總數為11個字符中,左對齊,其余字符用*號填充,egon******* print('egon'.rjust(11,'*')) # 將egon放到總數為11個字符中,右對齊,其余字符用*號填充,*******egonprint('egon'.rjust(11,'0')) # 0000000egon print('egon'.zfill(11)) #總共11個字符,除egon以外其余從左邊開始用0填充。0000000egon#3captalize swapcase title
print('abcdef dddddd'.capitalize()) #字符串的首字母大寫Abcdef dddddd print('abcAef dddddd'.swapcase()) #字符串內字母大小寫反轉ABCaEF DDDDDD print('abcAef dddddd'.title()) #字符串內每個單詞的首字母大寫,其他都小寫Abcaef Dddddd#is數字系列
nums1 = b'2' # bytes nums2 = '2' # 字符串數字 nums3 = '四' # 大寫數字 nums4 = 'Ⅵ' # 羅馬數字print(nums1.isdigit()) print(nums2.isdigit()) print(nums3.isdigit()) print(nums4.isdigit()) # True # True # False # False isdigit可以判斷bytes和字符串數字為數字。# 阿拉伯數字組成的字符串 # print(num2.isdecimal()) # print(num3.isdecimal()) # print(num4.isdecimal())# 阿拉伯數字\中文\羅馬組成的字符串 # print(num2.isnumeric()) # print(num3.isnumeric()) # print(num4.isnumeric())字符串類型總結
存一個值,有序,不可變類型
四、列表類型
list數據類型轉換:但凡能夠被for循環遍歷的數據類型都可以給list轉換成列表類型
res = list('hello') print(res) #['h', 'e', 'l', 'l', 'o']res = list(123) #數字類型不能被for i in 123 #報錯常用操作+內置方法
優先掌握的操作:
4.1按索引取值(正向存取+反向存取):
l = ['a', 'b', 'c', 'd', 'e'] print(l[1]) print(l[-2]) print(id(l)) l[4] = 'E' print(l, id(l))Tip:對不存在的索引會報錯!列表中的字符可以被替換,但是無法新增
但是字典可以新增:
dic = {'a':11} dic['b'] = 22 print(dic) # {'a': 11, 'b': 22}4.2切片(顧頭不顧尾,步長)
#切片,顧名思義,將列表內的數據按照索引的特征,切取一部分形成新的列表 #例: l = ['x', 'y', 'z', 'm', 'n'] print(l[1:3]) #這里完整的應該是print(l[1:3:1]),最后那個1是步長,不寫:1的話默認為1.從索引1開始到索引3的數據切出來組成新的列表 print(l[::-1] #這里是反向切片,前面兩個冒號代表默認,從-1到-5全部切出來結果為: ['y', 'z', 'm'] ['n', 'm', 'z', 'y', 'x']4.3長度len
l=['a','b','c','d','e'] print(len(l)) #54.4成員運算in 和 not in, 判斷數據在不在列表里。
l = ['x', 'y', 'z', 'm', 'n'] print('z' in l) #Ture print('a' not in l) #Ture4.5 [].append()追加,每次只能一個字符(多個的話會報錯)。
[]insert(插入位置緊跟其后的索引值,插入的字符) 插入 ,每次只能插入一個字符前面說過,列表按索引取值時候,只能替換,不能新增,現在我們用append和insert來對列表進行新增數據,
l = ['x', 'y', 'z', 'm', 'n'] l.append('o') print(l) l.append('q') print(l)#['x', 'y', 'z', 'm', 'n', 'o'] #['x', 'y', 'z', 'm', 'n', 'o', 'q']這里的append只能在列表最后面添加數據,不能在任意位置添加。
而insert就可以:
l = ['x', 'y', 'z', 'm', 'n'] l.insert(0,'xoxo') # 在索引號為0的位置前添加數據。 print(l) l.insert(6,'xxoo') #l最大索引是4,如果要想在l最后插入數據,就得將起始索引設為大于最大索引的數。 print(l) #['xoxo', 'x', 'y', 'z', 'm', 'n'] #['xoxo', 'x', 'y', 'z', 'm', 'n','xx00']4.6 刪除del和remove和pop
#del: l = ['x', 'y', 'z', 'm', 'n'] del l[2] print(l) #['x', 'y', 'm', 'n'] #del是一種刪除通用的操作,沒有返回值字典也可以刪除 dic = {'a':1} del dic['a'] print(dic)#{} #remove: l = ['x', 'y', 'z', 'm', 'n'] res = l.remove('m') print(l) print(res)#['x', 'y', 'z', 'n'] #None, 提示:remove刪除的那個元素沒有返回值。 #pop #指定要刪除的那個元素的索引,返回剛刪掉的元素。 l=['a','bbb','c','d','e'] l.pop(-1) #刪除‘e’ res = l.pop(1) print(l) print(res)#['a', 'c', 'd'] #bbb小練習:隊列:先進先出,后進先出的表達:(需要用到列表的新增append,然后用到列表的刪除并得到返回值;pop)
#先進先出: l = [] l.append('first') l.append('second') l.append('third') print(l) print(l.pop(0)) print(l.pop(0)) print(l.pop(0)) # ['first', 'second', 'third'] # first # second # third# 后進先出 l = [] l.append('first') l.append('second') l.append('third') print(l) print(l.pop(-1)) print(l.pop(-1)) print(l.pop(-1)) #['first', 'second', 'third'] # third # second # first4.7 循環
l=['a','b','c','d','e'] for item in l:print(item)結果是: a b c d e4.8.一些需要了解的操作
extend clear reverse sort
# extend l = [] print(id(l)) l.extend('a') print(l, type(l)) print(id(l))# 1851073943240 # ['a'] <class 'list'> # 1851073943240 #extend主要是講指定字符串、列表加到一個指定的列表當中形成一個更大的列表,extend不能直接添加數字類型,字符串可以。 # clear l = [12,123,'abc'] l.clear() print(l) #[] # clear l = [12,123,'abc'] # l.clear() # print(l) # #[] l.reverse() print(l) # ['abc', 123, 12]m = [11,22,'cdf'] print(m[::-1]) #reverse的功能和列表的反向切片類似。將列表發現排列 #['cdf', 22, 11] l = [12, 123, 2] l1 = ['a', 'b', 'z', 'n'] l.sort() l1.sort() print(l) print(l1)# [2, 12, 123] # ['a', 'b', 'n', 'z'] #注意:sort只能將全部是同總類型的列表進行排列,而且是升序排列。總結
以上是生活随笔為你收集整理的基础知识:数字、字符串、列表 的类型及内置方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基础知识:if判断、while循环、fo
- 下一篇: 基础知识:元组、字典、集合