python數據類型(字符串、列表、字典、切片操作)


一、整形和浮點型
整形也就是整數類型(int)的,在python3中都是int類型,沒有什么long類型的,比如說存年齡、工資、成績等等這樣的數據就可以用int類型,有正整數、負整數和0,浮點型的也就是小數類型(folat)的,帶小數點的

1 age = 18
2 b = -50
3 c = 5.222

二、布爾類型
什么是布爾類型,布爾類型就是真和假,只有這兩種,True和Fasle,非真即假,除了True和False還有0和1,非0即真

1  a = True
2  b = False

三、字符串和字符串操作
上面說了存數字,那要是想存自己的名字呢,那用int類型的就不行了,不能一個人的名字叫數字吧,這樣怎么辦呢,就有另一種數據類型應運而生,就是字符串,它可以存任意類型的字符串,比如名字,一句話等等。

1 name = 'Sriba'
2 msg = 'Welcome to my blog.'

四、列表和列表操作

上面說了字符串和整形,那現在要是想存一個班級的人的名字,這個班有200個人,怎么存呢,用字符串的話,那就是names = 'marry lily king .....'這樣,但是這樣存是可以存,那要是想取到某個人的名字怎么取呢,不能再去里面看一遍吧,那累死人了,為了解決這個問題,又有一種新的數據類型應運而生,那就是列表,這也是我們在以后的開發過程中,最常用的數據類型之一,列表也叫數組,列表定義,使用[]即可;列表里面可以再套列表,一個里面套一個列表,叫二維數組;一個里面套一個列表,里面的列表再套一個列表,這個叫三維數組,套幾層就是幾維,定義格式如下:

1 #names='崔海龍   楊帆   劉榮心.....'
2  list 列表  數組   array
3                    #0         1      2
4 stu_name=['崔海龍','楊帆','劉榮心','....']
5 下標、索引、角標
6 計算機里面起始都是從0開始的
7 print(stu_name[1])

通過下標訪問列表中的元素,下標從0開始計數,也就是說,比如說一個列表,有個5元素,那么它第一個元素下標就是0,第二個就是1,以此類推,字符串也有下標,和列表一樣 對列表的操作,分以下幾種增、刪、改、查
增:

1 stu_name=['崔海龍','楊帆','劉榮心','....']
2 stu_name.append('楊月')    #在list的末尾添加一個元素
3 stu_name.insert(0,'小軍')   #指定位置填加元素
4 print(stu_name)

1 stu_name=['崔海龍','楊帆','劉榮心']
2 stu_name[6]='aaad'
3 print('修改之后的',stu_name)

stu_name=['崔海龍','楊帆','劉榮心','張三',‘小軍’,'']
stu_name.pop()  #刪除最后一個元素
stu_name.pop(4)   #刪除指定下標的的元素
stu_name.remove('小軍')    #刪除指定的元素
#如果有一樣的元素,只會刪除第一個
stu_name.pop(18)   # 刪除不存在下標的元素,會報錯
del sty_name[-1]  #下標指定刪除的元素,-1刪除最后一個元素,如果用負數,從后面開始數,如果是正負從前面開始數,指定刪除
print (‘stu_name’)

1 my_list=['小黑','小白',1,1,2,1.5]
2 print(stu_name[-1]
3 print(stu_name[0]
4 print(stu_name.count(1)) #查詢某個元素在list里面出現的次數

 

五、列表操作,一些內置方法

 1 my_list=['小黑','小白',1,1,2,1.5]
 2 print(stu_name.count(1)) #查詢某個元素在list里面出現的次數
 3 print(’index方法:‘stu_name.index(1)  #查詢元素的下標
 4 print(’index方法:‘stu_name.index(89)  #查詢元素的下標,元素不存在會報錯
 5 print('reverse方法:’,my_list.reverse())  #reverse是反轉list
 6 print(my_list)
 7  
 8 my_list.clear()   #清空整個list
 9 print(my_list)
10 
11 nums=[9,23,4,6,3,78,0]
12 nums.sort()    #排序  升序
13 nums.sort(reverse=Ture)   #反轉  降序,如果指定reverse=Ture那么就是降
14  nums.extend(my_list) #把一個list中的元素加入進入(合並)
15 print(nums)
16 new_list = nums+my_list # 和extend的區別,extend是把my_list的值放到mums里,new_list=nums+my_list,是新建了一個
17 print(new_list)
18 print(new_list * 3) #乘幾次復制幾次
 
         
 

 六、數組

 1 nums1 =[1,2,3]  # 一維數據
 2 nums2 =[1,2,3,[4,56]]  # 二維數據
 3 print(nums2[3][3])     #取56
 4 print(nums2[-1][-1])   #取56
 5 nums=[1,2,3,4,['a','b','c','d','e',['','','']]]
 6 
 7 # nums=[1,2,3,4,['a','b','c','d','e',['一','二','三']],['四','五']] #三維數組
 8 print(nums[4][5][1])   #取到‘二 ’ 
 9 print(nums[-1][-1])     #取到‘五’
10 
11 passwords =['123456','123123','7891234']
12 print(len(passwords))   # 取長度,也就是list時面元素的個數
13 passwords[0]='dsdsdsdsd'
14 循環這個list
15 #count=0 # 最原始的LIST取值方式,是通過
16 #while count<len(passwords):
17 #s=passwords[count]
18 #print('每次循環的時候',s)
19 #count+=1
20 #
21 for p in passwords:  # for循環直接循環一個list,那么循環的時候就每次取他的值
22 print('每次循環的值',p)
23  p='abc_'+p
24 
25 #修改pawssword的值,每個值前面增加abc-
26 index=0
27 for p in  passwords:
28     passwords[index]='abc-'+p
29     index+=1
30     print(passwords)

32 #另一個修改方式
33 passwords =['123456','123123','7891234']
34 for index,p in enumerate(passwords): #使用枚舉函數,它會幫你計算下標
35 passwords[index]='abc_'+p
36 print(passwords)

七、切片,切片也就是另一種方式獲取列表的值,它可以獲取多個元素,可以理解為,從第幾個元素開始,到第幾個元素結束,獲取他們之間的值,格式是name:[1:10],比如說要獲取name的第一個元素到第五個元素,就可以用name[0:6],切片是不包含后面那個元素的值的,記住顧頭不顧尾前面的下標如果是0的話,可以省略不寫,這樣寫,name[:6],切片后面還有可以寫一個參數,叫做步長,也就是隔多少個元素,取一次,默認可以不寫,也就是隔一個取一次,切片操作也可以對字符串使用,和列表的用法一樣,實例如下:

 

# 就是list取值的一種方式
#l=list(range(1,10))
l=['a','b','c','d','e','f','g','k','m','n']
#   0    1   2    3   4    5   6    7   8    9    對應的下標
# print(l[0:3]) #顧頭不顧尾
# print(l[0:5])
# print(l[:5])#如果最前面沒寫的話,代表從0開始取的
# print(l[4:]) #如果冒號后面的沒寫的話,代表取到最后
# print(l[0:8:2]) # 取0-8的值,每隔兩個取一次
# print(l[::2]) # 步長,也就是代表每個幾個取一次


nums=list(range(1,101))
print(nums[1::2])   #取1-100的偶數
print(nums[::2])    #取1-100的奇數
print(nums[::-2])   #取奇數
# 如果最后面的步長是正數的話,那就從左到右開始取值
#如果后面的步長負數的話,那么就從左往左開始取值

#切片同樣適應於字符串
# words='中秋節要上課'
# print(words[0])
# print(words[::-1])
# for w in words:
#     print('每次打印的',w)
#
#
# for index,w in enumerate(words):
#     print('每次打印的',index,w)


s='上海自來水來自海上'
#123321
#111111
#回文算法,反過來倒過去都一樣
for i in range(10):
    s=input('請輸入一個字符串:')
    if len(s)<2:
        print('字符串長度必須大於1')
    elif s==s[::-1]:
        print('是回文')
    else:
        print('不是回文')

 八、字典

上面說了,整形、浮點型、字符串、列表和元組,下面說個新的數據類型,字典,字典也是我們開發過程中最常用的一種數據類型;想一個問題,現在要存整個北京市的所有人的信息,每個人有姓名、年齡、性別、家庭住址、學歷等等,那要是用列表存的話,那就得定義N多個數組,然后存上每個人的信息,那累死人了。。。這時候又有一種新的數據類型出現了,那就是字典,dict,全稱是dictionary,它具有極快的查找速度;字典是一種key-value的數據類型,比如說要存每個人的信息,那么每個人的編號就是key,value就是每個人的信息,這樣的話,一個字典就能存所有人的信息了。字典的定義使用{},大括號,每個值用“,”隔開,key和value使用“:”分隔。
舉個列子,如果用列表存每個人的信息的話,需要用兩個列表,一個存人名,一個存信息:

1 names = ['marry','amy','lily']
2 infos = [[18,18612512981,'北京'],[20,18612512991,'山東'],[25,18612532981,'河南']]

給一個名字,如果要查他的對應信息,那就要先從names里面找到它的位置,然后再從infos中找到它的信息,如果這個列表越長,那么它的查詢速度越慢。
如果用字典實現的話,只需要一個名字和信息對應的一個表,這樣就很快的根據名字找到它對應的信息,無論這個表有多大,查找速度都不會變慢。

1  infos = {'marry':[18,18612512981,'北京'],'amy':[20,18612512991,'山東'],'lily':[25,18612532981,'河南']}
2  infos['marry'] #取marry的信息

為什么dict查找速度這么快?因為dict的實現原理和查字典是一樣的。假設字典包含了1萬個漢字,我們要查某一個字,一個辦法是把字典從第一頁往后翻,直到找到我們想要的字為止,這種方法就是在list中查找元素的方法,list越大,查找越慢。
第二種方法是先在字典的索引表里(比如部首表)查這個字對應的頁碼,然后直接翻到該頁,找到這個字。無論找哪個字,這種查找速度都非常快,不會隨着字典大小的增加而變慢,這種就是字典的實現方式。
字典的特性:
字典是無序的,因為它沒有下標,用key來當索引,所以是無序的
字典的key必須是唯一的,因為它是通過key來進行索引的,所以key不能重復,天生就去重
字典的增刪改查:
增加:

stus={}
stus['name']='小軍'  #增加名字為小軍    
stus['name']='海龍'   #小軍的名字改為海龍     #如果這個key不存在就新增,如果存在就修改
#stus.setdefaulta('name','楊帆')  #如果這個key已經存在,那么就不修改它的值了
stus.setdefault('age',18)
stus.setdefault('email','1833@qq.com')
stus.setdefault('sex','')
stus.setdefault('phone','183232323')
print(stus)

修改

1 stus['name']='海龍

刪除

1 del suts['phone']
2 stus.pop('phone')
3 stus.potitem() #隨機刪除

 查詢

1 print(stus['name'])
2 print(stus.get('name'))#取不到值,不會報錯,返回none
3 print (stus.keys()) #取出所有的Kay
4 print (stus.values())#取出所有的values
5
6 for k in stus: #取key和values
7
print(k,'===>',stus.get(k))
8 for k ,v in stus.items(): #取key和values
9 print(k,'===>',v)
 
        

合並字典

1 stus.update({'moeny':1000})  #把后面的值或是函數合並到前面
2 print(stus)

字典嵌套多層取值

 1 all_stus={
 2     'xiaojun':
 3         {
 4         'sex':'m',
 5         'shengao':'185',
 6         'age':18,
 7         'email':'acb@qq.com',
 8         'addr':'火星',
 9         'id':1,
10         'car':['牧馬人','911','野馬','勞期萊斯']
11         #
12     },
13     'hailong':
14         {
15         'sex': 'm',
16         'shengao': '185',
17         'age': 18,
18         'email': 'acb@qq.com',
19         'addr': '火星',
20          'id': 1
21         },
22     'yangfan':
23         {
24         'sex': 'm',
25         'shengao': '185',
26         'age': 18,
27         'email': 'acb@qq.com',
28         'addr': '火星',
29         'id': 1,
30         'bags':{
31             'qianbao':['lv','ysl'],
32             'beibao':['coach','abc']
33         }
34         }
35 }
36 
37 #給xiaojun中car中增加‘五菱宏光’
38 all_stus['xiaojun']['car'].append('五菱宏光')
39 print(all_stus)
40 #查看xiaojun一個有多少輛車
41 print(len(all_stus['xiaojun']['car']))
42 #修改yangfan,性別改成女
43 all_stus['yangfan']['sex']=''
44 print(all_stus)
45 #刪除yangfan-bags-lv
46 all_stus['yangfan']['bags']['qianbao'].remove('lv')
47 print(all_stus)
48 all_stus['yangfan']['bags']['qianbao'].pop('lv')
49 print(all_stus)

字符串常用方法

 1 #password=' 123456 \n 456789'
 2 #print(password)
 3 #print(password.strip()) #默認去掉字符串兩邊的空格和換行符
 4 password='.jpg 123456789 .jpg ABCDE'
 5 new_password=password.strip('.jpg') #默認去掉字符串兩邊的空格和換行符,以及指定的字符串
 6 print('password',password)
 7 print('new_pasword',new_password)
 8 print(password.upper())  #轉換成大寫
 9 print(password.lower())  #轉換成小寫
10 print(password.capitalize())  #把首字母改成大寫的
11 print(password.count('.jpg')) #統計.jpg在password中出現的次數
12 print(password.replace('12345','上山打考虎'))   #把12345替換成上山打發考虎
13 print(password.replace('12354444','上山打考虎'))   #找不到內容不替換,也不報錯
14 
15 filename='a.mp3'
16 print(filename.endswith('.mp3'))  #判斷是否以XX結尾
17 print(filename.startswith('186'))   #判斷是否以開頭
18 a=True  #布爾類型,真
19 b=False #假,條件不成立變成
20 
21 names='小軍,海龍,楊帆,譚愛玲'
22 #print(list(names))
23 print(names.split(','))  #1、是把字符串變成list   2、以某個字符串分割,分割之后的是list中的每一個元素
24 
25 #如何刪除字符串中間的寬格
26 names='小軍 海龍  楊帆       譚愛玲'
27 print(names.replace(' ',''))  #把空格變成空字符串

文件讀寫

 1 #1、有個文件
 2 #2、打開文件
 3 #3、操作文件  讀、寫
 4 #4、關閉
 5 
 6 #創建一個users.txt文件 
 7 文件內容:
 8 abc,123
 9 bcd,456
10 
11 
12 f=open('users.txt','a+')
13 f.seek(0)  #t移動文件指針
14 print(f.read()) #獲取到文件里面所有的內容
15 f.write('yangfan,123456')
16 f.flush()
17 f.close()

 

 
#如果這個key不存在就新增,如果存在就修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM