字符串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])
運行測試如下