1. 程式人生 > >python數據類型及常用方法

python數據類型及常用方法

方法 數據類型 文件處理

一、數字

數字類型包含整型、浮點型,還包含不太常用的長整型、復數。

二、字符串

定義:在單引號\雙引號\三引號內,由一串字符組成

msg='hello world'

1、切片

print(msg[1:8])     #從下標為1的字符開始取,顧頭不顧尾,所以取到第七個字符,所以得到ello wo,空格也是一個字符
print(msg[1:8:2])   #從下標為1的字符開始取,顧頭不顧尾,所以取到第七個字符,步長為2,取一個跳過一個,得到el o
print(msg[0])        #取出下標為0的字符、就是第一個字符,得到h
print(msg[-1])       #取出最後一個字符,得到d

2、長度

print(len(msg))      #變量msg的字符串長度,得到11

3、成員運算in和not in,看所取得字符是否在變量定義的字符串裏

print('llo' in msg)          #‘llo’在變量定義的字符串裏,所以返回True

4、移除空白strip

name='**********hello***********'
print(name.strip('*'))         #去掉hello兩邊的*
print(name.lstrip('*'))       #去掉hello左邊的*
print(name.rstrip('*'))       #去掉hello右邊的*
#和用戶交互常用的情況如下
name=input('user: ').strip()  #對用戶輸入的字符串去掉兩邊的空格
print(name)

5、切分

info='root:x:0:0::/root:/bin/bash'
res=info.split(':')           #以冒號為分隔符對字符串進行分割,分割後會變成列表的形式
res=info.split(':',1)         #以冒號為分隔符對字符串進行分割,並指定分割最大次數為1,方便取出第一個冒號前的字符串
res=info.rsplit(':',1)        #從右進行切分,切分一次,結果是按照最後的冒號把字符串切為兩部分

6、循環

for i in range(0,5,2):             #0到4之間,步長為2,所以得到結果0 2 4
   print(i)

7、lower,upper

print('AbcD'.lower())     #把字符串全部顯示成小寫,結果是abcd
print('aaa'.upper())      #把字符串全部顯示成大寫,結果是AAA

8、startswith,endswith

msg='tom is boy'
print(msg.startswith('tom'))    #開頭的是否是tom,返回True或者False,所以返回True
print(msg.startswith('t'))          #開頭的是否是t,所以返回True
print(msg.endswith('boy'))     #末尾的是否是boy,所以返回True

9、join

l=['root', 'x', '0', '0']
 ':'.join(l)                              #把列表l裏的元素通過冒號合並成一個字符串,  列表l裏的元素必須全是字符串,否則報錯

10、replace

msg='tom say my name is tom'
msg=msg.replace('alex','leader',1)            #用leader替換tom,並且只替換一個
print(msg)

11、isdigit判斷是否是數字

age=input('>>: ').strip()
if age.isdigit():                                   #用戶輸入的是數字以後,將其轉化成整型
    age=int(age)
else:
    print('必須輸入數字')
print(age,type(age))

三、列表

1、定義:[]內可以有多個任意類型的值,逗號分隔

name=['zhao','qian','sun','li']

2.方法append和extend,insert

name.append('ni')            #列表裏添加元素ni
l=['song','zhang']
name.extend(l)                 #列表裏添加多個元素
print(name)
name.insert(1,'wang')        #插入元素wang,下標為1

3、方法index

print(name.index('zhao'))  #顯示元素zhao對應的下標

4、remove和pop

name.remove('li')               #刪除元素li,但是拿不到取走的元素
print(name)
name.pop()                       #刪除並拿到結果,取走一個值

5、循環

for item in name:     
    print(item)

6、clear

name.clear()        #清空列表

7、copy

l=name.copy()   #拷貝列表name,將結果作為變量l的值
print(l)

8、count

print(name.count('li'))        #統計元素li出現在列表裏幾次

9、reverse

name.reverse()                  #將列表name元素倒向顯示,結果為['li', 'sun', 'qian', 'zhao']

10、sort排序

l=[1,10,4,11,2,]
l.sort()              #對列表裏的元素排序
print(l)
l.sort(reverse=True)    #對列表裏的元素倒向排序
print(l)

四、元組

1、與列表類型比,只不過[]換成()

存多個值,對比列表來說,元組不可變,主要是用來讀

age=(11,22,33,44,55)

1、index

print(age.index(11))     #取出元組裏元素11對應得下標
print(age.index(3333))   # 元素不存在時報錯ValueError: tuple.index(x): x not in tuple
print(age[0:3])           #取出元組裏元素下標為0,1,2的子元組

2、長度len

print(len(age))            #得到元組元素的個數

3、成員運算in和not in

print(11 in age)           #判斷元素11是否在元組裏

4、循環

for item in age:
    print(item)

5、count

print(age.count(33))       #判斷元素33出現的次數

6、實現打印商品詳細信息,用戶輸入商品名和購買個數,則將商品名,價格,購買個數加入購物列表,如果輸入為空或其他非法輸入則要求用戶重新輸入

msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
}
goods=[]                         #購物車,準備一個空列表
while True:
    for k in msg_dic:
        print(k,msg_dic[k])
    choice=input('name: ').strip()
    if len(choice)==0 or choice not in msg_dic:          #如果用戶輸入字符為空或者輸入的不是指定的商品,就讓用戶重新輸入
        continue
    while True:
        num=input('number: ').strip()
        if num.isdigit():
            break
    goods.append((choice,msg_dic[choice],int(num)))      #註意括號容易少寫
    print('購物車',goods)

五、字典

1、定義:key必須是不可變類型(int,float,str,tuple),value可以是任意類型

info={'name':'egon','age':18,'sex':'male'}

2、fromkeys

info={}.fromkeys(['name','age','sex'],None)    #快速創建字典,前面列表的每個元素會和none組成字典的一個元素

3、修改字典的值

info['age']=22             #指定key,等於一個值

4、長度len

print(len(info))   #判斷字典的長度,即有幾個元素

5、成員運算in和not in

print('name' in info)

6、刪除pop

print(info.pop('name'))      #取出字典key為name的元素
print(info)                   # 看到元素為name的鍵值對已經刪掉了

7、popitem和keys、values

print(info.popitem())          #取出後面的鍵值對,結果是('sex', 'male')
print(info.keys())           #取出字典裏所有的key,結果是dict_keys(['name', 'age'])
print(list(info.keys())[1])   #取出字典裏所有key的組合,轉為列表,再根據下標取出對應得key,結果是age
print(info.values())         #取出字典裏所有的value,結果是dict_values(['egon', 18])
print(list(info.values())[1])   #取出字典裏所有value的組合,轉為列表,再根據下標取出對應得value,結果是18
print(list(info.items())[1])    #取出鍵值對,最後的結果是('age', 18)

8、循環

info={'name':'egon','age':18,'sex':'male'}
for k in info:                        #循環key,最後通過key取到values
    print(k,info[k])

9、有如下值集合 [11,22,33,44,55,66,77,88,99,90],將所有大於 66 的值保存至字典的第一個key中,將小於 66 的值保存至第二個key的值中

nums=[11,22,33,44,55,66,77,88,99,90]
d={'k1':[],'k2':[]}
for num in nums:
    if num > 66:
        d['k1'].append(num)
    if num < 66:
        d['k2'].append(num)
print(d)

六、集合

1、定義和原則

集合:可以包含多個元素,用逗號分割

集合的元素遵循三個原則:

1:每個元素必須是不可變類型(可hash,可作為字典的key)

2: 沒有重復的元素

3:無序

pythons={'alex','egon','yuanhao','tom','jim'}
linuxs={'tom','sam'}

2、長度

print(len(pythons))               #長度即是集合 python的元素個數,所以為5

3、成員運算in和not in

print('alex' in pythons)         #判斷alex是否在python集合中,所以結果為True

4、交集

print(pythons & linuxs)       #同時在兩個集合中的元素,所以結果是{'tom'}

5、合集

print(pythons | linuxs)         #兩個集合的所有元素,重復的顯示一次,所以結果是{'tom', 'jim', 'egon', 'sam', 'alex', 'yuanhao'}

6、差集

print(pythons - linuxs)        #python中的元素減去linuxs中的元素,剩下的結果是{'jim', 'yuanhao', 'egon', 'alex'}

7、對稱差集

print(pythons ^ linuxs)      #沒有同時在兩個集合中的元素,即所有元素減去交集的結果是{'egon', 'sam', 'jim', 'alex', 'yuanhao'}

8、父集>,>=

a={1,2,3}
b={1,2}
print(a>=b)               #判斷集合a是否包含集合b的元素,所以結果為True

9、子集<,<=

print(a<=b)              #判斷集合a是否被集合b包含,所以結果為False

10、去重

l=['a','b',1,'a','a']
print(set(l))            #轉為集合的形式,元素一樣的顯示一次,所以結果是{1, 'a', 'b'},結果沒有按照以前的順序

11、循環

for i in l:
    print(i)

12、用之前的方法去重並保持順序


new=[]
for i in l:
    if i not in new:
        new.append(i)
print(new)

13、借助集合實現去重並保持順序

new=[]
s=set()
for i in l:
    if i not in s:
        s.add(i)
        new.append(i)
print(new)

14、集合的其他用法

s1={1,2,3}
s2={1,2}
print(s1-s2)             #取得s1和s2的交集,不改變原來的集合的元素
print(s1.difference(s2))  #取s1和s2不同的地方,不改變原來的集合的元素
s1.difference_update(s2) #對s1賦值,改變了s1的元素,結果s1就成了{3}
print(s2.pop())          #隨機從集合s2中取走一個元素
s2.add('b')             #給集合s2增加一個元素b
s2.discard('b')          #從集合中刪除元素b,刪除的元素不存在不會報錯
s2.remove('b')          #從集合中刪除元素b,刪除的元素不存在則報錯
s1={1,2,3,4,5,'a'}
s2={'b','c',}
print(s1.isdisjoint(s2)) #兩個集合沒有共同部分時,返回值為True
s2.update({6,7})        #集合s2增加元素6和7,一次添加多個元素,所以結果為{'c', 'b', 6, 7}
print(s2)

七、字符編碼

1、存取文件不亂碼的法則:用什麽編碼存的,就要用什麽編碼讀

2、encode和decode

unicode-----encode----->gbk

gbk-------->decode----->unicode

3、解釋器的字符編碼

python3解釋器默認使用的字符編碼是utf-8

python2解釋器默認使用的字符編碼是ascii

4、

python2的str就是python3的bytes

python2的unicode就是python3的str

八、文件處理

1、打開文件讀,python進程要訪問文件,會向操作系統提交讀請求,操作系統取到的數據交給進程,進程開辟內存空間存放數據,所以最後要關閉文件,回收操作系統的資源

f=open(r'C:\Users\song\Desktop\a.txt','r',encoding='utf-8')          #最前面的r表示保持字符的本意,不然'\'就需要轉意
data=f.read()
print(data)
f.close() #文件關閉,回收操作系統的資源
print(f.readline(),end='')      #逐行讀,文件大時,不能一次讀所有數據,就需要逐行讀了

2、為避免忘記關閉操作系統打開的文件,可以直接讓程序關閉

with open('a.txt','r',encoding='utf-8') as f: 

3、寫操作,每次執行都會清掉原來的數據,然後寫入新的內容

f=open(r'C:\Users\song\Desktop\a.txt','w',encoding='utf-8')
f.write('11111\n')
f.write('1111\n2222\n3333\n')           #寫入多行時,行尾用'\n'標識
f.close()



























python數據類型及常用方法