高級資料型別(字符,元組,串列,字典)
- 一. 字串
- 二. 串列
- 三. 元組
- 四. 字典
前言
作者:神的孩子都在跳舞
關注我的csdn博客,更多python知識還在更新
一. 字串
生活中我們經常坐大巴車,每個座位一個編號,一個位置對應一個下標, 字串中也有下標,要取出字串中的部分資料,可以用下標取,

-
python中使用切片來截取字串其中的一段內容,切片截取的內容不包含結束下標對應的資料,
-
切片使用語法:[起始下標:結束下標:步長] ,步長指的是隔幾個下標獲取一個字符,
注意:下標會越界,切片不會
- 常用函式

- 練習:
Test='rodma '
print(type(Test))
print('Test的一個字串%s'%Test[0])#跟陣列差不多
#回圈輸出
for i in Test:
print(i,end=" ")#也可以用‘ ’
print('\n')
# count():統計出現的次數
print(Test.count('r'))
# join():回圈取出所有值用xx去連
str='-'
print(str.join(Test))
#去除兩邊空格strip(),去除右邊空格:lstrip(),去除右邊空格:rstrip
print(Test.strip())
#復制字串,id函式可以查看物件的記憶體地址
print('Test的記憶體地址%d'%id(Test))
b=Test #在此只是把a物件的記憶體地址賦給了b
print('Test的記憶體地址%d'%id(Test))
print(b)
#定義一個數接下來用
datastr='i love Python'
#find函式:可以查找目標物件在序列物件中的為值,如果沒找到就回傳-1
print(datastr.find('M'))
# index()函式:檢測字串中是否包含子字串 回傳的是下標值
print(datastr.index('i'))
#find 和 index 的區別:如果index沒有找到物件就會報錯,find輸出-1,找到輸出0
#starswith()函式:判斷開頭,如果是就true
#endswith()函式是判斷結尾
print(datastr.startswith('i'))
# capitalize():首字母轉換為大寫
# isalnum():判斷是否是字母和數字,全部是字母就輸出true,有空格也不行
# isalpha() :判斷是否是字母
# isdigit():判斷是否全部是數字
# swapcase():大寫變小寫,小寫變大寫
# title() :把每個單詞的首字母變成大寫
# lower():裝換為小寫,
# upper():轉換為大寫
a='tsx'
print(type(a))
print(datastr.capitalize())
print(a.isalnum())
print(datastr.isalpha())
print('abc123'.isdigit())
print(datastr.swapcase())
print(datastr.title())
print(datastr.lower())
print(datastr.upper())
# 切片:是指截取字串中的其中一段內容,
# 切片使用語法:[起始下標:結束下標:步長]
# 切片截取的內容不包含結束下標對應的資料,步長指的是隔幾個下標獲取一個字符,
# slice [start:end:step] 左閉右開 start<=value<end 范圍
# 下標會越界,切片不會
#記住左閉右開的原則
# 定義一個物件
strmgs='Never give up'
# 1——8之間的資料
print(strmgs[1:8])
# 第3個字符到最后
print(strmgs[2:])
# 第1個字符到第3個 溫馨提示:記住左閉右開的原則
print(strmgs[:3])
# 步長是什么?比如定義2,就是從當前開始到2個下標獲取一個字符,在通俗點就是隔一個獲取下一個
print(strmgs[::2])
# 負方向是倒序輸出,如果步長選為-1,則反方向輸出
print(strmgs[::-1])
# 同理,如果步長是-2,則反方向隔兩個下標獲取一個字符
print(strmgs[::-2])
# 共有方法有三種 + * in
# +:兩個物件相加操作,會合并兩個物件
# *:物件自身按指定次數進行 + 操作
# in:判斷指定元素是否存在于物件中,輸出的是bool值
strA='I love'
strB='Python'
print(strA+strB)
print(strA*3)
print('I' in strA)
'''輸出
<class 'str'>
Test的一個字串r
r o d m a
1
r-o-d-m-a- -
rodma
Test的記憶體地址1863907131504
Test的記憶體地址1863907131504
rodma
-1
0
True
<class 'str'>
I love python
True
False
False
I LOVE pYTHON
I Love Python
i love python
I LOVE PYTHON
ever gi
ver give up
Nev
Nvrgv p
pu evig reveN
p vgrvN
I lovePython
I loveI loveI love
True
'''
二. 串列
list是一種有序的集合[],可以隨時添加和洗掉其中的元素,
串列的下標取值/切片/是否越界與字串一致,區別就是串列是獲取元素,

練習
li=[] # 空串列
li=[1,2,3,4,'python',True]
print(type(li))
# #len函式可以獲取到串列物件中的資料個數
print(len(li))
# append();在串列后面追加元素
# count(): 統計元素出現的次數
# extend(): 擴展,相當于批量添加
# index(): 獲取指定元素索引號
# insert(): 在指定位置插入
# pop(): 洗掉后面一個元素
# remove():移除左邊找到的第一個元素
# reverse(): 反轉串列
# sort():串列排序 reverse=True為倒序
listA=['abcd',785,12.23,'qiuzhi',True]
# print('--------------增加-----------------------')
print('追加之前',listA)
listA.append(['fff','ddd']) #追加操作
listA.append(8888)
print('追加之后',listA)
listA.insert(1,'這是我剛插入的資料') #插入操作 需要執行一個位置插入
print(listA)
rsData=list(range(10)) #強制轉換為list物件
print(type(rsData))
listA.extend(rsData) #拓展 等于批量添加
listA.extend([11,22,33,44])
print(listA)
# print('-----------------修改------------------------')
# print('修改之前',listA)
# listA[0]=333.6
# print('修改之后',listA)
listB=list(range(10,50))
print(type(listB))
print('------------洗掉list資料項------------------')
print(listB)
# del listB[0] #洗掉串列中第一個元素
# del listB[1:3] #批量洗掉多項資料 slice
# listB.remove(20) #移除指定的元素 引數是具體的資料值
listB.pop(1) #移除制定的項 引數是索引值
print(listB)
#beg -- 開始索引,默認為0,
#end -- 結束索引,默認為字串的長度,
print(listB.index(19)) #回傳的是一個索引下標
# 查找,跟元祖有點不一樣,這是左開右閉
print(type(listA))
print(listA) #輸出完整的串列
print(listA[0]) #輸出第一個元素
print(listA[1:3]) #從第二個開始到第三個元素
print(listA[2:]) #從第三個元素開始到最后所有的元素
print(listA[::-1]) #負數從右像左開始輸出
print(listA*3) #輸出多次串列中的資料【復制】
a=[21,45,66,78]
b=[1,2]
def add100(x):
i= 0
for item in x:
x[i]=item+100
i+=1
pass
return x
pass
print(add100(b))
def add100(x):
x+=100
return x
list2=list(map(add100,a))
print(list2)
a=[21,45,66,78]
print(list(map(lambda x:x+100,a)))
def Old(x):
if x>50:
return x
pass
print(list(filter(Old,a)))
'''輸出
<class 'list'>
6
追加之前 ['abcd', 785, 12.23, 'qiuzhi', True]
追加之后 ['abcd', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888]
['abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888]
<class 'list'>
['abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]
<class 'list'>
------------洗掉list資料項------------------
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
[10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
8
<class 'list'>
['abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]
abcd
['這是我剛插入的資料', 785]
[785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]
[44, 33, 22, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 8888, ['fff', 'ddd'], True, 'qiuzhi', 12.23, 785, '這是我剛插入的資料', 'abcd']
['abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '這是我剛插入的資料', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44]
[101, 102]
[121, 145, 166, 178]
[121, 145, 166, 178]
[66, 78]
'''
三. 元組
-
元組與串列類似,不同之處在于元組的元素不能修改,元組使用小括號,元組也是通過下標進行訪問
-
元組創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可,
-
元組的內置方法:
count:統計元素在元組中出現的次數
index:查找指定元素在元組中的下標索引 -
練習
#空元組
tupleA=()
print(type(tupleA))
#元組也可以用for陳述句查詢
tupleA=(1,2,3,'cd','a')
for item in tupleA:
print(item,end=' ')
# 元組也可以使用切片,左閉右開
print(tupleA[-2:-1:])#倒著取下標 為-2 到 -1 區間的
#假設元組中放入佇列
tupleA=(1,2,3,'cd','a',[11,22,33])
print(tupleA)
#可以對佇列的值進行修改(原本元組是不可以修改的)
print(type(tupleA[5]))
tupleA[5][0]=5500
print(tupleA)
tupleA[5].append('chen')
print(tupleA)
'''輸出
<class 'tuple'>
1 2 3 cd a ('cd',)
(1, 2, 3, 'cd', 'a', [11, 22, 33])
<class 'list'>
(1, 2, 3, 'cd', 'a', [5500, 22, 33])
(1, 2, 3, 'cd', 'a', [5500, 22, 33, 'chen'])
'''
四. 字典
- 字典是Python的中重要的一種資料型別,可以存盤任意對像,
- 字典是以鍵值對的形式創建的
{'key':'value'}利用大括號包裹著, - 訪問值的安全方式get方法,在我們不確定字典中是否存在某個鍵而又想獲取其值時,可以使用get方法,還可以設定默認值
注意:
- 字典的鍵(key)不能重復,值(value)可以重復,
- 字典的鍵(key)只能是不可變型別,如數字,字串,元組,
- 常用方法
- 練習
# 空字典
dictA={}
print(type(dictA))
# 如何添加字典資料? key:value
dictA['name']='陳運智'
dictA['age']=30
print(dictA)
# 批量添加
dictA={"pro":'藝術','shcool':'北京電影學院','age':30,'pos':'xueshen'}
print(dictA)
# 通過鍵位修改值
dictA['pro']='學生'
print(dictA)
# 添加更多資料
dictA.update({'name':'陳運智'})
print(dictA)
# 獲取所有鍵和值
print(dictA.keys(),dictA.values())
print(dictA.items())
for key,value in dictA.items():
print('%s==%s'%(key,value))
# 指定鍵洗掉
del dictA['name']
print(dictA)
# 按照key和value排序
print(sorted(dictA.keys()))
#print(sorted(dictA.values()))
#拷貝, copy,deepcopy 會拷貝復雜型別,如 list、dict
import copy
dictB=copy.copy(dictA)#淺拷貝
dictc=copy.deepcopy(dictA)#深拷貝
print(id(dictc))
print(id(dictA))
print(id(dictB))
dictB['age']='20'
dictc['age']='20'
print(dictB)
print(dictc)
print(dictA)
print(type(dictB))
print(type(dictc))
本人博客:https://blog.csdn.net/weixin_46654114
本人b站求關注:https://space.bilibili.com/391105864
轉載說明:跟我說明,務必注明來源,附帶本人博客連接,
請給我點個贊鼓勵我吧

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282629.html
標籤:python
