Python中字串,列表,元組,字典,個人總結!!!
目錄
一.字串
- 字串的定義及格式
- 字串的索引和切片
- 字串的查詢
- 字串的拆分
- 字串的替換
- 字串的修飾
- 字串的格式化
- 字串的變形
- 字串的判斷
二.列表
- 列表的定義及格式
- 列表的索引和for迴圈遍歷列表
- 列表的新增
- 列表的刪除
- 列表的查詢
- 列表的修改
- 列表的切片
- 列表的排序和翻轉
- 列表的拷貝
三.元組
- 元組的定義及建立
- 元組的訪問
- 使用多個變數來接受元組的值
- 元組中的方法
四.字典
- 字典的定義及格式
- 字典的增刪查改
- 字典的增加
- 字典的刪除
- 字典的修改
- 字典的查詢
- for迴圈及字典的遍歷
一.字串
1.字串的定義及建立:
字串是有序的,不可更改的,元素用引號包圍的序列。
三引號,雙引號或單引號中的資料就是字串。例如:"hello" 'world'
2.字串的索引和切片:
索引:
注意:索引都是從0開始索引,如果是負數,則是從右向左開始索引。
s = [1, 2, 3, [5, 6, 7], 8, 9] print(s[0]) # 輸出列表中的第一個數 print(s[-1]) # 輸出列表中的最後一個數組 print(s[3][-1]) # 輸出列表中子列表的最後一個數
輸出結果:1
9
7
切片:
s = [1, 2, 3, 4, 5, 6, 7, 8] print(s[0:3]) print(s[1:5]) # s[start:end:step],從start開始,到end-1結束,步長為step # step==2,就間隔一個字元;==3就間隔2個字元,依次遞進 print(s[1:5:1]) # 從第二個數開始到第四個數結束 print(s[:]) # 輸出 所有字元 print(s[:4]) # 輸出前4個字元 相當於[0:4] print(s[::-1]) # 將字元倒敘輸出 print(s[2:]) # 除了前兩個字元,其餘全部輸出 print(s[-1:-4:-1]) print(s[-3::]) print(s[::-2])
輸出結果:[ 1,2,3 ]
[ 2,3,4,5 ]
[ 2,3,4,5 ]
[ 1,2,3,4,5,6,7,8 ]
[ 1,2,3,4]
[ 8,7,6,5,4,3,2,1 ]
[ 3,4,5,6,7,8 ]
[ 8,7,6 ]
[ 6,7,8 ]
[ 8,6,4,2 ]
3.字串的查詢:
s = 'Hello world Python' 注意:字串中的空格也算在索引內
print(s.count('o')) # 計算'o'在是中的個數。
print(s.find('l')) # 查詢,返回從左第一個指定字元的索引,找不到返回-1
print(s.find('c')) # 字串中沒有發現就返回-1
print(s.rfind('o')) # 字串從右至左找第一個字元,但是索引是從左往右索引。
print(s.index('c')) # 字串中沒有發現該字元,就會報錯。
print(s.rindex('h')) # 和rfind類似,但是找不到會報錯
輸出結果: 3
2
-1
16
ValueError: substring not found #報錯了
15
4.字串的拆分:
s = 'Hello world Python'
print(s.split('w')) # 按照指定內容進行拆分,分為指定部分前 和指定部分後兩部分。返回列表形式。
print(s.partition('orl')) # 按照指定內容進行拆分,分為指定部分前 ,指定部分和 指定部分後三部
分,返回元組形式。
s = 'Hello\n world\n Python'
print(s.splitlines()) # 按照換行符分割,返回列表的形式
print(s.splitlines(keepends=False)) # keepends=False 預設不顯示換行符
print(s.splitlines(keepends=True)) # keppends=True 預設顯示換行符
輸出結果: ['Hello ', 'orld Python']
('Hello w', 'orl', 'd Python')
['Hello', ' world', ' Python']
['Hello', ' world', ' Python']
['Hello\n', ' world\n', ' Python']
5.字串的替換:
s = 'Hello world Python'
print(s.replace('o', '0')) # 將字串中所有的o 替換成0 預設全部替換
print(s.replace('o', '0', 2)) # 第三個引數,是指定替換的個數
輸出結果: Hell0 w0rld Pyth0n
Hell0 w0rld Python
----------------------------------------------------------------------------------
translate 按照對應關係來替換內容 from string import maketrans
s = 'Hello world,'
a = 'world,'
b = 'python'
ret = str.maketrans(a,b)
s1 = s.translate(ret) # 必須一一對應
print(s1)
輸出結果: Hehhy python
6.字串的修飾:
center:將字串按指定長度居中,若果不能左短右長,可以指定填充內容,預設以空格填充。
s = 'hello'
print(s.center(10,'*')) # 填充長度是10 ,用 * 填充
輸出結果:**hello***
-------------------------------------------------------------------------------------
ljust:讓字串在指定的長度左齊,可以指定填充內容,預設以空格填充
rjust:讓字串在指定的長度右齊,可以指定填充內容,預設以空格填充。
# ljust 和 rjust
s = 'hello'
print(s.ljust(15, '~'))
print(s.rjust(15, '*'))
輸出結果:hello~~~~~~~~~~
**********hello
-----------------------------------------------------------------------------------------
zfill: 將字串填充到指定長度,不足的地方從左開始填充0
s = 'hello'
print(s.zfill(10))
輸出結果:00000hello
7.字串的格式化:
for.mat()用法:
相對基本格式化輸出採用'%'的方法,for.mat()功能更強大,通過傳入引數進行格式化,並使用大括號{}代替%
1.使用位置引數:位置必須一一對應:
name = 'zs'
age = 19
print('大家好,我叫{},今年{}歲'.format('zs',age) # 位置必須一一對應
print('大家好,我叫{0},我叫{0},我叫{0},今年{1}歲'.format('zs',age)
輸出結果:大家好,我叫zs,今年19歲
大家好,我叫zs,我叫zs,我叫zs,今年19歲
2.使用關鍵字引數:
print('我叫{name},今年{age}歲了'.format(name = 'zs',age = 19))
輸出結果:我叫zs,今年19歲了
8.字串的變形:
# upper 將字串中所有字母轉換為大寫
# lower 將字串中所有字母轉化為小寫
# swapcase 將字串中字母大小寫互換
# title 將字串中單詞首字母轉化為大寫
# capitalize 只有字串首字母大寫
# expandtabs 將字串中tab('\t')符號轉化為空格
-------------------------------------------------------------------------------------
s = 'Hello python'
print(s.upper())
print(s.lower())
pow(s.swapcase())
print(s.title())
print(s.capitalize())
s1 = 'hello\tpython'
print(s.expandtabs())
輸出結果:HELLO PYTHON
hello python
hELLO PYTHON
Hello Python
Hello python
hello python
9.字串的判斷:
大部分判斷都是返回bool型
s = 'Hello123'
print(s.isalnum()) # True 判斷字串是否完全由數字和字母組成
s1 = 'abcde'
print(s1.isalpha()) # True 判斷字串是否完全由字母組成
s2 = 'abc123'
print(s2.isdigit()) # False 判斷zfc是否完全由數字組成
s3 = ' abcDE'
print(s3.isupper()) # False 判斷字串內字元是否全是大寫
s4 = 'abcd'
print(s4.islower()) # True 判斷字串內字元是否全是小寫
s5 = 'Hello Python'
print(s5.istitle()) # True 判斷字串中的單詞首字母是否大寫
s6 = ' '
print(s6.isspace()) # True 判斷字串是否完全由空格組成
s7 = 'hello python'
print(s7.startswith('h',2,4)) # False 判斷字串在指定範圍內是否已指定字元開頭
print(s7.endswith('lo',0,5)) # True 判斷字串在指定範圍內是否已指定字元結尾
s8 = 'hello python'
print(s8.split('o')) # ['hell', ' pyth', 'n'] 將字串以指定內容分割,返回列表形式。
二.列表
1.列表的定義及格式:
列表是個有序的,可修改的,元素用逗號隔開,用中括號包圍的序列。
格式:變數名 = [ 元素1,元素2,元素3...]
作用:儲存多個數據
2.列表的索引:
通過索引獲取表中的書記,索引從0開始
注意:不要索引越界
s = [ 'hello',a,b,c ]
print(s[1])
輸出結果:a
用for雲鬟遍歷列表:
name = [ 'zs','ls','ww' ]
for i in name:
print( i )
輸出結果:zs
ls
ww
3.列表的新增:append(), insert(), extend(), 還有兩個列表直接相加
# append
lst = ['悟空','八戒','唐僧']
lst.append('白骨精') # append 向列表末尾增加指定元素
print(lst)
# 輸出結果: ['悟空', '八戒', '唐僧', '白骨精']
-------------------------------------------------------------------------------------------
# insert
lst = ['悟空','八戒','唐僧']
lst.insert(1,'白骨精') # insert 往列表制定位置新增制定元素,負索引倒敘插入。超過索引插入末尾
print(lst)
# 輸出結果: ['悟空', '白骨精', '八戒', '唐僧']
------------------------------------------------------------------------------------------
#extend
lst = ['悟空','八戒','唐僧']
lst1 = ['悟空','八戒','唐僧','悟空']
lst.extend(lst1) # 將一個列表中的元素新增到另一個列表的尾部合併,不會去重。
print(lst)
# 輸出結果: ['悟空', '八戒', '唐僧', '悟空', '八戒', '唐僧', '悟空']
4.列表的刪除:
# pop 刪除指定索引位上的元素,預設刪除-1的資料
lst = ['悟空','八戒','唐僧']
lst.pop(1)
print(lst)
輸出結果:['悟空', '唐僧']
lst = ['悟空','八戒','唐僧']
lst.pop()
print(lst)
輸出結果:['悟空', '八戒']
-----------------------------------------------------------------------------------------
# remove 從左往右刪除指定的元素,
lst = ['悟空','八戒','唐僧']
lst.remove('八戒')
print(lst)
# 輸出結果:['悟空', '唐僧']
-----------------------------------------------------------------------------------------
# clear 清空列表中所有的元素,返回一個空列表
lst = ['悟空', '八戒', '唐僧']
lst.clear()
print(lst)
輸出結果:[ ]
-----------------------------------------------------------------------------------------
del 刪除整個列表或列表的資料,del是python內建功能,不是列表獨有的
lst = ['悟空', '八戒', '唐僧']
del lst
print(lst)
輸出結果:NameError: name 'lst' is not defined (報錯)
5.列表的查詢:
# count 返回指定元素在列表的個數
lst = ['hello','world','hello','python']
print(lst.count('hello'))
輸出結果: 2
--------------------------------------------------------------------------------------------------------------------------------------------------------
lst = ['悟空', '八戒', '唐僧', '悟空']
num1 = lst.index('悟空')
print(num1)
輸出結果:0
6.列表的修改:
lst = ['悟空', '八戒', '唐僧']
lst[0] = '白龍馬' # 將列表第一位數值為替換為‘白龍馬’
print(lst)
輸出結果:['白龍馬', '八戒', '唐僧']
7.列表的切片:
lst = ['a', 'b', 'c', 'd', 'e']
print(lst[0:4:2])
# 輸出結果為:['a', 'c']
8.列表的排序和翻轉:
sort() 按照ascii碼錶順序進行排序
lst = ['tom', 'james', 'jerry', 'zs', 'ls']
lst.sort()
print(lst) # 從小到大排序
輸出結果:['james', 'jerry', 'ls', 'tom', 'zs']
lst.sort(reverse=True) # 有大到小排序
print(lst)
輸出結果:['zs', 'tom', 'ls', 'jerry', 'james']
------------------------------------------------------------------------------------
reverse() 將列表翻轉
lst = ['tom', 'james', 'jerry', 'zs', 'ls']
lst.reverse()
print(lst)
輸出結果:['ls', 'zs', 'jerry', 'james', 'tom']
9.列表的拷貝:
淺拷貝:
lst1 = ['西施','貂蟬',['悟空','八戒']
lst2 = lst1.copy() #將lst1 的內容拷貝一份給lst2, 兩者的id 不一樣
print(lst2)
lst2[0] = '楊貴妃' #lst2 中的西施改成楊貴妃
print(lst2)
輸出結果:['西施', '貂蟬', ['悟空', '八戒']
['楊貴妃', '貂蟬', ['悟空', '八戒']
------------------------------------------------------------------------------------
深拷貝:
import copy
lst1 = ['西施','貂蟬',['悟空','八戒']
lst2 = copy.deepcopy(lst1)
print(lst2)
lst2[0] = '楊貴妃'
print(lst2)
輸出結果:['西施', '貂蟬', ['悟空', '八戒']
['楊貴妃', '貂蟬', ['悟空', '八戒']
三.元組
1.元組的定義及特點:
定義:
通過()來定義:變數名=(1,2,3,4,) 。以逗號分割的,以小括號包圍的序列。
通過tuple函式定義: lst=[1,2,3,4] 變數名=tuple(lst)
特點:
元組是有序的,不能更改的,由於元組不可變 ,所以遍歷元組要比列表快。
2.元組的訪問:
通過索引,預設從0開始
通過索引,預設從0開始
tup = (1,2.2,True,'hello') # 獲得2.2的值,一定要注意索引越界的問題
print(tup[1])
輸出結果:2.2
-------------------------------------------------------------------------------------------
通過切片:
tup = (1,2.2,True,'hello')
print(tup[0:4:2])
輸出結果:(1,True)
-----------------------------------------------------------------------------------------
訪問多維元組:
tup = (('zs',10),('ls',11),('ww',12))
print(tup[1][0])
輸出結果:ls
3.使用多個變數來接受元組的值:
tup = (('zs',10),('ls',11),('ww',12))
name,age,height,weight = ('zs',18,1.64,150)
print(name)
print(age)
print(height)
print(weight)
for name, age in tup: #for 迴圈遍歷多重元組
print(name,age)
輸出結果: zs
18
1.64
150
zs 10
ls 11
ww 12
4.元組的方法:
tup = ('a','b','c','c','b','a','x')
print(tup.index('b'))
print(tup.index('a',2,len(tup)))
print(tup.count('a'))
輸出結果: 1
5
2
5.一個逗號的魅力:
tup = (1,)
print(tup)
tup1 = (1)
print(tup1)
輸出結果:(1,)
1
四.字典
1.字典的定義及格式:
定義:字典是一個無序的,可以修改的,元素呈鍵對值的形式,以逗號分隔,大括號包圍的序列。
格式:變數名={key:value,key:value}
注意:字典中的key是不可變的型別,value是可變型別的
2. 字典的增加:
setdefault()
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic.setdefault('weight',170) # 鍵存在就不新增,不存在就新增預設的值。
print(dic)
dic.setdefault('weight',180)
print(dic)
輸出結果:{'name': 'zs', 'age': 10, 'height': 1.75, 'weight': 170}
{'name': 'zs', 'age': 10, 'height': 1.75, 'weight': 170}
---------------------------------------------------------------------------------------
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic['name'] = 'ww' # 根據key鍵來設定值,如果key存在就直接覆蓋原有的值
print(dic)
輸出結果: {'name': 'ww', 'age': 10, 'height': 1.75}
3.字典的刪除:
pop()
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic.pop('name') # 根據鍵刪除值
print(dic)
輸出結果: {'age': 10, 'height': 1.75}
------------------------------------------------------------------------------------------
popitem()
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic.popitem() # 隨機刪除一個鍵值對
print(dic)
輸出結果:{'name': 'zs', 'age': 10}
-----------------------------------------------------------------------------------------
cleal()
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
dic.clear() # 清空字典裡所有的鍵值對
print(dic)
輸出內容:{}
del dic
pprint(dic)
輸出結果:NameError: name 'dic' is not defined (報錯)
4.字典的修改:
使用key修改:
dic = {'name':'zs','age':10,'height':1.78}
dic['name'] = '張三'
print(dic)
輸出結果: {'name':'張三','age':10,'height':1.78}
---------------------------------------------------------------------------------------
update() 按照字典的格式更新鍵的內容,若果字典不存在這個鍵,就建立這個鍵和值
dic = {'name': 'zs', 'age': 10, 'height': 1.78}
dic1 = {'name':'張三','weight':152}
dic.update(dic1)
print(dic)
輸出結果:{'name': '張三', 'age': 10, 'height': 1.78, 'weight': 152}
5.字典的查詢:
c = {'name': 'zs', 'age': 10, 'height': 1.78}
print(dic.get('name')) # get()根據鍵來獲取相應的值,如果鍵不存在,預設返回None
print(dic.keys()) # 返回一個包含字典所有key的列表
print(dic.values()) # 返回一個包含字典所有value的列表
print(dic.items()) # 返回字典鍵值,返回呈元組的形式
print(len(dic)) # 測量字典鍵值對的個數,注意是鍵值對。
輸出結果:
zs
dict_keys(['name', 'age', 'height'])
dict_values(['zs', 10, 1.78])
dict_items([('name', 'zs'), ('age', 10), ('height', 1.78)])
3
6.for 迴圈及字典的遍歷:
dic = {'name': 'zs', 'age': 10, 'height': 1.75}
# 獲取所有的key
for key in dic:
print(key)
for key in dic.keys():
print(key)
輸出結果:
name
age
height
-------------------------------------------------------------------------------------
# 獲取所有的value
for value in dic.values:
print(value)
輸出結果:zs
10
1.75
-------------------------------------------------------------------------------------
# 獲取所有的鍵值對,並以元組的形式返回:
for item in dic.items():
print(item)
輸出結果:
('name', 'zs')
('age', 10)
('height', 1.75)
# 字典的遍歷:
for key,value in dic.items:
print(key,value)
輸出結果:
name zs
age 10
height 1.75