天天看點

【Python】序列通用操作一  序列通用操作二  清單list常用操作三  文本序列str常用操作

目錄

一  序列通用操作

1 判斷值是否屬于序列

2 序列連結與重複

3 下标索引

4 切片

5 步長

6 序列的基本内置全局函數

二  清單list常用操作

1 清單的特征

2 清單與生成器

3 可變清單list常用操作

1)添加元素

2)删除元素

3)插入元素

4)複制

5)排序

4 講一講元祖tuple :不可變的“清單”

三  文本序列str常用操作

1 字元串引号

2 轉義字元:\

3 序列通用功能

4 字元串常用功能

5 格式化字元:在字元串中插入變量

6 格式化字元:數字格式化的那些坑

一  序列通用操作

序列分類:可變序列list,不可變序列tuple、str

1 判斷值是否屬于序列

# 判斷值是否屬于序列

lst = [1,2,3,4,5,6]
a,b = 1,10
print(a in lst)  # a 在 lst 序列中 , 如果 x 在 y 序列中傳回 True。
print(b not in lst)  # b 不在 lst 序列中 , 如果 x 不在 y 序列中傳回 True。
           

2 序列連結與重複

# 序列連結與重複

lst1 = [1,2,3]
lst2 = ['a','b','c']
print(lst1+lst2)  # "+":序列的連結
print(lst1*3,lst2*2)  # "*":序列重複
           

3 下标索引

# 下标索引

lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[0],lst[2],lst[9])  # 索引從0開始,eg lst[2]中,下标索引是2,指向lst的第3個值
print(lst[-1])  # 索引-1代表最後一個值
#print(lst[10])  # 這裡一共有10個值,是以最大索引是9
           

4 切片

# 切片

lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[2:5])  # 切片可以了解成清單的值區間,且是一個左閉右開區間,這裡lst[2:5]代表的區間是:索引2的值 - 索引4的值
print(lst[:5])  # 左邊無索引,代表從索引0開始
print(lst[4:])  # 右邊無索引,代表以最後一個值結束
print(lst[5:-1])  # 索引5的值 - 倒數第二個值 (切片是右閉區間,注意了)
           

5 步長

# 步長

lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[0:5:2])  # List[i:j:n]代表:索引i - 索引j,以n為步長
print(lst[::2])  # 按照2為步長,從第一個值開始截取lst資料
print(lst[1::2])  # 按照2為步長,從第二個值開始截取lst資料
           

6 序列的基本内置全局函數

# 序列的基本内置全局函數

lst = [1,2,3,4,5,6,7,8,9,0]
print(len(lst))  # 清單元素個數
print(max(lst),min(lst),sum(lst))  # 傳回清單的最大值、最小值、求和,這三個函數都隻針對數字的list
print(lst.index(3))  # .index(obj)方法:從清單中找出某個值第一個比對項的索引位置

lst = [1,1,2,3,3,4,4,4,4,5,6]
print(lst.count(4))  # .count(obj)方法:計算值的出現次數
           

二  清單list常用操作

序列是Python中最基本的資料結構,它支援字元,數字,字元串甚至可以包含清單(即嵌套)

清單用 [ ] 辨別,是 python 最通用的複合資料類型。

清單中值的切片也可以用到變量 [頭下标:尾下标] ,就可以截取相應的清單,從左到右索引預設 0 開始,從右到左索引預設 -1 開始,下标可以為空表示取到頭或尾。

加号 + 是清單連接配接運算符,星号 * 是重複操作

1 清單的特征

# 清單的特征

lst1 = [1,2,3,'a','b','c',[1,2,3]]
# 可包含任意類型的對象:數值、字元串、清單等

lst2 = [143,56,894,67,43]
print(lst2[0],lst2[4],lst2[-1])
# 通過下标索引通路序列中的值 → 序列的順序是不能改變的,通過索引來定位清單的元素

lst3 = [1,2,3]
lst3 = lst3 * 3
print(lst3)
# 可随意變換清單長度,相當于随意指定新的清單

lst4 = [1,2,['a','b']]
# 可嵌套

lst5 = [100,101,102]
lst5[0] = 10
print(lst5)
# 可原位改變
           

2 清單與生成器

# 清單與生成器

print(range(5),type(range(5)))  
# range()是生成器,指向了一個範圍
# range(5)代表指向了0,1,2,3,4這幾個值
# range(2,5)代表指向了2,3,4這幾個值,注意這裡不是使用:
# range(0,10,2)代表指向了0,2,4,6,8這幾個值,最後的2代表步長

lst = list(range(5))
print(lst)
# 通過list()函數生成清單
           

3 可變清單list常用操作

1)添加元素

# 可變清單list常用操作 - 添加元素

lst = list(range(10))
lst.append('hello')
print(lst)
# list.append() 添加元素

lst.append(['a','b','c'])
print(lst)
lst.extend(['a','b','c'])
print(lst)
# 添加多個元素用.extend()方法:用新清單擴充原來的清單,注意和append()方法的差別
           

2)删除元素

# 可變清單list常用操作 - 删除元素

lst = ['Jack','Jack','Tom','Tracy','Alex','White']
lst.remove('Jack')
print(lst)
# .remove方法:移除清單中某個值的第一個比對項

del lst[3:5]
print(lst)
# del語句:删除list的相應索引值

lst.clear()
print(lst)
# 移除所有值
           

3)插入元素

# 可變清單list常用操作 - 删除元素

lst = ['Jack','Jack','Tom','Tracy','Alex','White']
lst.remove('Jack')
print(lst)
# .remove方法:移除清單中某個值的第一個比對項

del lst[3:5]
print(lst)
# del語句:删除list的相應索引值

lst.clear()
print(lst)
# 移除所有值
           

4)複制

# 可變清單list常用操作 - 複制

lst = list(range(10))
lst1 = lst
lst1[2] = 'hello'
print(lst,lst1)
# lst,lst1指向同一個清單

lst = list(range(10))
lst2 = lst.copy()
lst2[2] = 'hello'
print(lst,lst2)
# list.copy()方法:複制一個新的清單,lst,lst2指向兩個清單(雖然兩個清單值相同)
           

5)排序

# 可變清單list常用操作 - 排序

lst1 = [12,45,32,98,45,66,3]
lst2 = ["asd", "cxv", "ghv"]
lst1.sort()
lst2.sort()
print(lst1,lst2)
# 預設升序排序/字母順序

lst1.sort(reverse=True)
lst2.sort(reverse=True)
print(lst1,lst2)
# 參數reverse:反向排序,針對數字

lst3 = sorted(lst1)
lst3.append('hello')
print(lst1,lst3)
# 函數sorted():排序并複制
           

4 講一講元祖tuple :不可變的“清單”

# 講一講元祖tuple :不可變的“清單”

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d"  # 可以不加括号
tup4 = (50,)  # 元組中隻包含一個元素時,需要在元素後面添加逗号

print(tup1[2],tup3[:2])  # 索引、切片和list一樣

del tup3 # 元祖不能單獨删除内部元素(不可變性),但可以del語句來删除整個元祖
#print(tup3)

print(len(tup1))
print(tup1 + tup2)
print(tup4 * 3)
print(max(tup2),min(tup2))
# 序列通用函數

lst = list(range(10))
tup5 = tuple(lst)
print(tup5)
# tuple()函數:将清單轉換為元組
           

三  文本序列str常用操作

字元串是 Python 中最常用的資料類型。我們可以使用引号('或")來建立字元串

字元串也是序列:文本序列

1 字元串引号

# 字元串引号

str1 = "abc"
str2 = 'abc'
str3 = 'my name is "fatbird"'
# 雙引号單引号無差別,但文本中有引号的時候要互相交替使用

str4 = '''hello! how are you?
          I`m fine, thank you.'''
# 需要多行字元串時候用三引号 ''' ''',""" """
           

2 轉義字元:\

# 轉義字元:\

print('\'', '\"')  # \',\" :分别輸出單引号,雙引号
print('hello\nhow do you do?')  # \n:空行
print('\\')  # 輸出\,是以檔案路徑用“/”或者“\\”
           

3 序列通用功能

# 序列通用功能

print('a' in 'abc')  # in/not in :判斷是否存在
print('我很帥' + "沒錯")  # 文本連接配接
print('handsome '*4)  # 文本複制

st = 'abcdefg'
print(st[2],st[-1])
print(st[:2])
print(st[::2])
# 索引、切片、步長

print(st.index('g'))  # .index()方法
print('st長度為:',len(st))  # 計算字元串長度(思考這裡能否把逗号換為"+")
           

4 字元串常用功能

# 字元串常用功能

st = "i`m handsome!"
st2 = st.replace('handsome','ugly')
print(st)
print(st2)
st = 'hahaha'
st2 = st.replace('ha','he',2)
print(st2)
# str.replace(old,new,count):修改字元串,count:更換幾個

st = "poi01,116.446238,39.940166"
lst = st.split(',')
print(lst)
# str.split(obj):拆分字元串,生成清單

lst = ['poi01', '116.446238', '39.940166']
m = '-'
st = m.join(lst)
print(st)
# str.join():連接配接字元串,對象為序列

st = 'abcdefg'
print(st.startswith('a'), st.endswith('f'))
# str.startswith(“str”)  判斷是否以“str”開頭;str.endswith (“str”)  判斷是否以“str”結尾

st = 'aBDEAjc kLM'
print(st.upper())  # 全部大寫
print(st.lower())  # 全部小寫
print(st.swapcase())  # 大小寫互換
print(st.capitalize())  # 首字母大寫

st = '1234567'
print(st.isnumeric())  # 如果 string 隻包含數字則傳回 True,否則傳回 False.

st = 'DNVAK'
print(st.isalpha())  # 如果 string 至少有一個字元并且所有字元都是字母則傳回 True,否則傳回 False

st = 'avd   '
print(st.rstrip())  # 删除字元末尾的空格
           

5 格式化字元:在字元串中插入變量

# 格式化字元:在字元串中插入變量

name = "FATBIRD"
truth = "%s is 好人" %name
print(truth)
# %s 表示我們這裡要插入一個變量(字元串),%name代表這裡我們插入name → 是以,兩個%解決問題

x = 4   
y = "hehe"  
z = 4.2
print("this is %i" %x)
print("this is %s" %y)
print("this is %f" %z)
# %s的s有什麼含義:%s %z %f都是格式化字元串,s/i/f分别代表插入字元串的源資料類型:整型/字元型/浮點型
           

6 格式化字元:數字格式化的那些坑

# 格式化字元:數字格式化的那些坑

m = 3.1415926 
print("pi is %f"  %m)
print("pi is %.2f" %m)
# 我隻想輸出2位小數:%.2f,此處是四舍五入!

m = 10.6
print("pi is %i"  %m)
print("pi is %.0f" %m)
# 差別:%i 不四舍五入,直接切掉小數部分

m = 100 
print("have fun %+i"  %m)
print("have fun %.2f"  % -0.01)
# 顯示正号,負号根據數字直接顯示

m = 100 
print("have fun % i"  %m)
print("have fun % +i"  %m)
print("have fun % .2f"  %-0.01)
# 加空格,空格和正好隻能顯示一個

m = 123.123123123 
print("have fun %.2e"  %m)
print("have fun %.4E"  %m)
# 科學計數法 %e  %E

m1 = 123.123123123
m2 = 1.2
print("have fun %g"  %m1)
print("have fun %g"  %m2)
# 小數位數少的時候自動識别用浮點數,資料複雜的時候自動識别用科學計數法