python列表,字符串等類型介紹(列表的增,刪,改,差)

字符串str

1)字符串介紹

1.使用單引號包裹起來的字符就是字符串

例如
a='1b'
b='2a'

字符串不可以被更改,例如如下,
>>> a='1'
>>> a='2'

這裏a實際已經不是原來的a了,在內存中的位置已經不一樣了

2.字符串可以使用 “+”,進行拼接,

>>>a='a'
>>>b='b'
>>> c=a+b
>>> print (c)
ab

"*"進行重複操作
>>>b *3
’bbb’

3.字符串識別成員操作符: in/not in

(in :如下字符串a在變量a中,輸出真)
>>>a='abc'
>>> 'a' in a
True
>>> 'd' in a
False

(not in:如下字符串d,不在變量a中,則輸出真,在的話輸出假)
>>>'d' not in a
True

2)字符串輸出

#代碼如下
name='ajbn'
age=20
work='運維工程師'
print("姓名:%s"%name)
print("年齡:%d"%age)
print("工作是:%s"%work)

運行測試如下
姓名:ajbn
年齡:20
工作是:運維工程師

>>>

3)字符串輸入

#代碼如下
name=input('輸入你的名字')
print("你的名字是:%s"%name)

測試如下
輸入你的名字ajbn
你的名字是:ajbn

4)下標和切片

1.下標

1) 字符串下標的概念

字符串可列表都是可以通過index索引或者下標的形式用來訪問數據的
例如
>>> a='qwe'

例如,上面a的值,'q'的下標就是0,'w'的下標就是’1’,’e'的下標就是2

以此類推,下標都是從0開始,

2)下標的查詢語法

>>>a[0]
’q’

後面的0就是下標數字,

2.切片

對操作的對象截取其中的一部分操作
基本格式如下
slice(start, stop[, step])

start:開始值,不填默認0,取到該值
stop:結束值,不填取到最後一個,填的的話取不到該值取到前一個,可以超過最大的數值
step:步長默認爲1(一個目標至下一個目標的差),類似range函數,可以爲負數

舉例如下
>>> name='ajbn66'
>>> print (name[0:3])
ajb
(輸出0~2地標的字符,類似range函數,後面的只會輸出到前一位,就是下標2 前面地標0一定會輸出)

>>>print(name[:3])
ajb
(不寫前面的,起始值,默認從下標0,開始)

>>> print(name[0:])
ajbn66

(不寫後面的,結束值,默認輸出到最後的下標)

>>>print(name[:])
ajbn66

(全部不寫,下標從0開始,輸出全部字符串)

>>> print (name[0:4:2])
ab

(從下標0開始,輸出到下標3,步長爲2表示每隔一個字符輸出一個字符依次類推,步長3就是隔兩個字符輸出一個字符

當然也可反正打印出字符串

>>>p='APACHE'
>>> print (p[5:-7:-1])
EHCAPA

(這裏解釋一下,5是正着數那個’E’的下標,解釋一下後面結束值,是-7
因爲,因爲0是正着排的第一個,而倒着排’E’,就是’-1‘,到’A’,是-6’,而要顯示’A’,必須填‘-7’
這裏和range函數不太一樣)

5)字符串常見操作(內置方法)

字符串屬於不可變類型,以下的方式是使用特殊的方式打印出來
其原來變量的值並不會改變的,如果需要使用,
需要給原來變量從新賦一個新的值

1 .capitalize()

使字符串的首字母大寫,其餘字母小寫
>>>u='AJBN'
>>>print(u.capitalize())
Ajbn
(後面的u.capitalize,u是變量名)

如果字符串的首字母不是英文,則後面的全小寫
>>>a='123AJBN'
>>> print(a.capitalize())
123ajbn

2 .casefold()

使字符串裏的字母全小寫,不管其他字符是否爲其他形式

>>>I='098AJBN好'
>>> print(I.casefold())
098ajbn好

3 . center (.center(width, fillchar))

將字符串中原來的內容居中顯示(打印)
width表示整體的長度,fillchar表示需要添加打印的字符用來填補字符串要達到width的長度,fillchar默認是空格,

>>> k='AJBN123好'
>>> print (k.center(20,'*'))

下面這是輸出結果,長度一共是20,中間是字符串內容,其他地方以“*”號顯示,當然你也可以把“*”,換成其他任何的字符或數字,注意要以 ' '" "包裹
******AJBN123好******

4 .count (.count(,start,end))

計算指定字符在字符串中出現的次數,不寫默認從0至結尾
start 開始的下標(能取到),end 結束的下標(取不到,不寫取到字符串最後)

例如
>>> C='AJBN66666'
>>> print(C.count('6',0,6))
2
(查找字符串’6‘的出現次數,從下標0,開始到下標5,輸出2,出現了2次)

5 .endswith (.endswith(,start,end))

查詢字符串中是否以指定字符結尾,返回bool值,end的下標取不到,不寫end的值可以取到

>>>H='www baidu'
>>>print (H.endswith('a',0,6))
True
從下標0開始,到下標5,測試是否已'a'結尾,是返回真,不是返回假,空格也算一個地標

6 .find (.find(start,end))

查找指定字符在字符串中出現的第一個下標,如果沒有返回 ‘-1’,
end默認不寫,取到最後,和上面一樣

>>> L='AAA III'
>>> print (L.find('I'))
4

如上例子,查找’I‘字符串在字符串出現的第一個下標,並打印,如果多個’I‘ 只會輸出從左到右第一個的下標

7 .index (.index(start,end))

返回指定字符在字符串中出現的第一個下標,end 默認不寫取到最後,
取不到改下標,和find()方法一樣,只不過指定字符不存在的話index方式會報錯

>>> F='nihao xiaoming//'
>>> print(F.index('i',0,2))
1
(如上,i的地標是‘1’,篩選範圍在地標0~1之間)

8 .isalnum()

判斷是否爲字母或者數字,返回布爾值

>>> O='love99 master'
>>> print(O.isalnum())
False
(上面O變量,因爲中間有空格,所以返回假)

下面這個就對了
>>>L='love996'
>>>print(L.isalnum())
True

9 .isalpha()

判斷是否是純字母,返回布爾值

>>>A='aAaI'
>>>print (A.isalpha())
True

10.判斷字符串是否是十進制

>>>Z='10'
>>>print(Z.isdecimal())
True

(注意只可以是字符串,不可以寫數字)

11 .isdigit()

判斷字符串是否是純數字
(如下,有小數點也不算是純數字)
>>> K='255.255'
>>> print (K.isdigit())
False

>>> K='255'
>>> print(K.isdigit())
True

12 .islower()

判斷是否全小寫,數字不影響判斷

>>> S='st9'
>>>print(S.islower())
True

(下面這裏有大寫字母,返回假)
>>>S='sTr'
>>> print(S.islower())
False

13 .isupper()

判斷字母是否全大寫,符號和數字不影響

>>> Y='III123*'
>>> print(Y.isupper())
True

14 .join(iterable)

將可迭代對象用字符串進行分隔,如果是列表分隔,則會顯示爲字符串,但本質不會改變
>>>I='123qwe'
>>>print(';' .join(I))
1;2;3;q;w;e

>>> print(',' .join(I))
1,2,3,q,w,e

15 .split(sep=None, maxsplit=-1)

刪除字符串(列表不可以)中的sep,並返回一個列表;以str爲分隔符切片string,如果num有指定值,則僅分隔 num+ 個子字符串

就是使用特定的符號或者其他分隔原來的字符串顯示成列表的形式

>>>n='www;baidu;com'
>>> print (n.split(';'))
[‘www’, ‘baidu’, ‘com’]

列表list

列表是可變的類型,對列表做的,增加,刪除,改變等操作,會改變原來的變量的值

1) 創建列表的方法

使用[ ]包裹,中間需要使用英文逗號, 分隔,中間的值可以是任意都可以,沒有限制
>>>l=[1,2,3]
>>> print (type(l))
<class ‘list’>
>>>print (l)
[1, 2, 3]

2) 工廠函數,轉換

可以將其他類型轉換成列表的形式
>>>k='w12'
>>>print (type(k))
<class ‘str’>
>>>l=list(k)
>>> print (type(l))
<class ‘list’>
>>>print (l)
[‘w’, ‘1’, ‘2’]

3)列表的長度,len(列表名)

求列表有幾段,從1開始,不是下標的概念
>>>l=[1,2,3]
>>>print (len(l))
3

4)列表操作 查

1.通過下標

>>>l=['w1','w2','w3','w4','w5','w6']
>>>print (l[0])
w1
>>> print (l[1])
w2

也支持切片的操作
>>> print (l[0:2])
[‘w1’, ‘w2’]

2.通過for循環

oldlist=['xiaoming','xiaohong','xiaolan']
for i in oldlist:
    print (i)

運行測試,結果如下
xiaoming
xiaohong
xiaolan

3.通過while循環

newlist=['xiao1','xiao2','xiao3']
i=0
while i<3:
    print (newlist[i])
    i=i+1

運行測試
xiao1
xiao2
xiao3

4.成員操作符 in , not in

>>>a=['w1','w2','w3']
>>> 'w1' in a
True

5.通過元素查找下標index(obj,start,stop)

start開始的下標可以取到,stop下標取不到取前一個,默認不寫取到最後

如下,查找’w1’字符串在列表中的地標從地標0到地標2之間查找
>>> l.index('w1',0,3)
0

(如上w1的地標是0)

6.二維列表

>>>l=[[1,2,3],[4,5,6],[7,8,9]]
>>> print (l[2][1])
8

(這裏解釋一下,第一個[2],實際是大地標2,[7,8,9],這個列表,第二個 [1] 值是[7,8,9]中的地標1,也就是8)

5) 列表操作 增

1 .append

增加到列表末尾,追加,只能追加一個或一個組如[1,2,3]
>>>k=[7,8,9]
>>> k.append(10)
>>>print (k)
[7, 8, 9, 10]

2 .extend

將一個可迭代對象逐個添加到末尾(只能是列表或字符串)
>>>l=[2,3,4]
>>>l.extend('888')
>>>print (l)
[2, 3, 4, ‘8’, ‘8’, ‘8’]

注意上面的8是字符串而不是數字加了引號

3 .insert(index, object)

將obj添加到指定的下標位置之前

例如,將 8 添加 1之前,1的地標是2
>>> s=[3,2,1]
>>> s.insert(2,8)
>>>print (s)
[3, 2, 8, 1]

6)列表操作之改

1.通過下標直接=修改

如下將’5‘改成8通過下標實現,5的下標是2
>>>i=[1,3,5,7]
>>>i[2]=8
>>> print (i)
[1, 3, 8, 7]

2.元素互換

如下,將地標2,3的元素就是4 4換成地標0,和1的元素就是2 2
>>> l=[2,2,4,4]
>>> l[2],l[3]=l[0],l[1]
>>> print (l)
[2, 2, 2, 2]

7) 列表操作 刪

1 .clear() 清空列表

>>>l=[3,3,0,6]
>>>l.clear()
>>> print(l)
[]

2 .pop(index)

刪除並返回(index指定的)一位元素,默認刪除最後一位,基於下標

如下刪除下標爲1的值,返回了4說明把4刪除了
>>>k=[2,4,6,8,10]
>>> k.pop(1)
4
>>> k.pop()
10
>>> print (k)
[2, 6, 8]
(不寫括號裏的,默認刪除最後一位,如上)

3 .remove(value)

刪除指定的元素(具體的值)(基於元素而不是下標)

如下,刪除數值爲20的,不是基於下標,
>>> o=[5,10,20]
>>> o.remove(20)
>>> print (o)
[5, 10]

4 .del 需要刪的元素

基於地標實現
>>>l=[2,3,4]
>>> del l[2]
>>>print (l)
[2, 3]

基於列表名,會刪掉整個列表
>>> del (l)
>>> print (l)
(會報錯,提示不存在,因爲已經刪了)

8)列表其他方法

1 .copy():

拷貝出一個新的列表,拷貝t,到t2
>>>t=[8,9]
>>>t2=t.copy()
>>> print (t2)
[8, 9]

2 .count(values):

返回value這個值在列表中出現的次數
>>>y1=[1,1,1,2,2,2]
>>>print (y1.count(1))
3
(如上1 在y1列表中出現了3次)

9) 列表排序

sort()方法是將list按特定順序重新排列
默認爲由小到大,參數reverse=True可以改爲倒序,由大到小

>>> list1=[9,8,7,6,5,4,3,2,1]
>>>list1.sort()
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]

(設置爲False,爲正序)
>>>list1.sort(reverse=False)
>>> print (list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

(如下設置爲True是倒序)
>>>list1.sort(reverse=True)
>>> print (list1)
[9, 8, 7, 6, 5, 4, 3, 2, 1]

注意上面我沒有直接打印,那個類似這個list1.sort(reverse=True),因爲這裏這是一個動作
要打印更改後的變量的值

10)應用案例

1.列表去重

list1=[1,2,2,3,3,4,4,5,5,5]
ku=[]
for i in list1:
    if i not in  ku:
        ku.append(i)
print (ku)        

運行測試
[1, 2, 3, 4, 5]

2.點名系統

輸入任意值返回一個名字,而且必須是隨機的

import random   #必須引用這個模塊,得到隨機的值
name=['小明','小紅','孫悟空','唐僧','沙僧','紅孩兒']
while True:
    input1=input('可以輸入任意的值按n鍵退出')
    if input1 == 'n':
        break #退出循環
    else:
        index=random.randint(0,5)
        #上面這裏表示從0到5生成一個隨機的值,可以根據地標來寫
        #因爲地標從0開始到5,所以寫上面的
        print(name[index]) 

運行測試如下
在這裏插入圖片描述

實驗完畢 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章