1. 程式人生 > >python之路day03--資料型別分析,轉換,索引切片,str常用操作方法

python之路day03--資料型別分析,轉換,索引切片,str常用操作方法

資料型別整體分析

int :用於計算
bool:True False 使用者判斷
str:少量資料的儲存

list:列表 儲存大量資料 上億資料
[1,2,3,'zzy',[aa]]

元組:只讀列表
(1,23,'asdadas')

dist:字典 鍵值對的形式儲存,關係型
{'name':'小王八','age':16}
{'小王八':[12,3,'dsaa'],'二哥':[200,200]}

集合:求交集等
{1,2,33,'adsf'}

int bool str 資料轉換

int:
i =2
print(bit_length(100)) #轉成2進位制的最小位數

1 0000 0001         #1
2 0000 0010         #
2 3 0000 0011 #2

bool:True False
int --->> str
i =1
print(str(i),type(i)) # 1 <class 'int'>

str --->> int (只能是數字才能轉換成int型別)
s = '113'
print(int(s))  #113
int --> bool  (非零數字轉換為bool,為T,0位False)
i=1
j=0
print(bool(i)) #True
print(bool(j)) #False

# bool-->int (T為1,False為0)
print(int(True)) #1 print(int(False)) #0
ps:
while True:
pass

while 1: #效率高,最終要轉為2進位制
pass

str--->bool (非空字串為True,空字串為False)
print(bool('')) #False
print(bool('000')) #True

print(type(str(True)))  #<class 'str'>
print(type(str(False))) #<class 'str'>

 

str索引及切片

s = 'asdfghjkl'
s1 = [0]   #s1和s沒有任何關係,對原字串進行切片(原字串不變),是生成的新的字串
s[首:尾:加步長]
索引從0開始,print(s[0]) 為a
print(s[0:3]) -->asd  #切片顧頭不顧尾

print(s[0:6:2]) -->>adg
print(s[0:]) -->>asdfghjkl  全部字串
print(s[:])  -->>asdfghjkl  全部字串
print(s[0::2]) -->>adgjl    #步長必須要是規律的 1,2,3

#從後面取 步長-1
print(s[4:0:-1])  #gfds
print(s[::-2]) #ljgda

 

字串的操作放法及for迴圈

s = 'alex Wusir'
#
s1 = s.capitalize()  #首字母大寫
print(s1) #Alex wusir

s2 = s.upper()  #全部大寫
s21 = s.lower() #全部小寫
print(s2,s21) #ALEX WUSIR alex wusir

s3 = s.swapcase() #大小寫翻轉
print(s3) #ALEX wUSIR

a = 'zhangyang zy yy'
a1 = a.title() #每個隔開的(特殊字元和數字)單詞首字母大寫
print(a1) #Zhangyang Zy Yy

ps:

s_str = 'acEQ'
you_input = input('請輸入驗證碼,不區分大寫小:')
if you_input.lower() == s_str.lower():
    print('登入成功')

else:
    print('輸入有誤,請重試')

居中,空白填充 20長度
s = 'alex Wusir’
s5 =s.center(20,'%')
print(s5)# %%%%%alex Wusir%%%%%
#\t 補充到8位(包含alex)
#\t 補充到8位(包含alex,從alex向左數8位)
s = 'alex\tsir'
s6 = s.expandtabs()
print(s6) #alex    sir

str常見的操作方法

    len

s = 'alex Wusir'
l = len(s)
print(l)  #10 10個元素,代表10個字元

判斷字串以什麼開頭
s7 = s.startswith('alex')
print(s7) #True

s8 = s.startswith('e',2,5) #True 索引切片2-5
print(s8)# True
find 通過元素找索引,找到返回下標,找不到返回-1
s = 'alex Wusir'
s9 = s.find('a',0,4)
print(s9) # 0

s91 = s.find('l')
print(s91) #1

s92 = s.find('y')
print(s92) #-1
index 通過元素找索引,找不到返回報錯
s10 =s.index('a')
print(s10) #0
strip 預設刪除前後空格,加上chars,從首尾同時開始刪除,遇到阻礙就不在進行
s = '  @[email protected]%[email protected] '
s11= s.strip()
print(s11) #@[email protected]%[email protected]

s12 =s.strip('%@ ')
print(s12) #@alex%[email protected]
s13=s.lstrip() #只刪左邊的
print(s13)
s14=s.rstrip() #只刪右邊的
print(s14)#  @[email protected]%[email protected]
str = '  [email protected]%[email protected] '
str1 =str.strip('%@ ')
print(str1) #[email protected]%Wusir
count  計算字元出現了幾次
st = 'aa2234fdssf'
st1 = st.count('a')
print(st1) #2
split 以符號分割文字,預設是空格分割 S.split(sep=None, maxsplit=-1) -> list of strings
str -->> list
s = 'alex wusir zy'
l = s.split()
print(l) #['alex', 'wusir', 'zy']

s1 = 'alex:wusir:zy'
l1 = s1.split(':')
print(l1) #['alex', 'wusir', 'zy']
#ps:一分為二
s2 = ':alex:wusir:zy'
l2 =s2.split(':')
print(l2) #['', 'alex', 'wusir', 'zy']
format的三種玩法  格式化輸出 {}為佔位
s ='我叫{} 今年{} 喜歡{},再說一下我叫{}'.format('zy',18,'coding','zy')  #有幾個佔位符就要寫幾個,和%s佔位差不多
s ='我叫{0} 今年{1} 喜歡{2},再說一下我叫{0}'.format('zy',18,'coding','zy') #我叫zy 今年18 喜歡coding,再說一下我叫zy
s ='我叫{name} 今年{age} 喜歡{hobby},再說一下我叫{name}'.format(name = 'zy',age = 18,hobby = 'coding') #我叫zy 今年18 喜歡coding,再說一下我叫zy
print(s) #我叫zy 今年18 喜歡coding,再說一下我叫zy
 
replce  # S.replace(old, new[, count]) -> str
s = 'sadaafdslfkds'
s1 = s.replace('a','b') #預設全部替換
print(s1) #sbdbbfdslfkds
s2 = s.replace('a','b',1)  #只替換一次
print(s2) #sbdaafdslfkds
is系列 判斷
s= 'sadg112'
s1=s.isalnum() #字母或數字
print(s1) #True
s2=s.isalpha() #字母
print(s2)#False
for迴圈
s = 'asdfggs'  #迴圈輸出字串裡面的元素
for i in s:
    print(i)

if 'a' in s:
    print('您輸出的詞語有敏感詞彙')


for i in (18,11,22):
    print(i) #18 11 22