基礎(chǔ)元素
學(xué)習(xí)一門(mén)編程語(yǔ)言的時(shí)候,我最先考慮的事情就是如何操作值谦炒,值(value)在程序組可以是一個(gè)數(shù)字1,2,3,4贯莺,字符'hello,word'.我們使用變量來(lái)保存這些值。又把變量保存的值成為對(duì)象宁改,計(jì)算機(jī)會(huì)給變量的對(duì)象和變量分配內(nèi)存空間缕探。python使用的內(nèi)存分配方式成為引用語(yǔ)義或者對(duì)象語(yǔ)義,而像c語(yǔ)言使用的時(shí)值語(yǔ)義还蹲。接下來(lái)具體說(shuō)明一下這兩種語(yǔ)義的區(qū)別爹耗。
值語(yǔ)義:所謂值語(yǔ)義是指目標(biāo)對(duì)象由源對(duì)象拷貝生成耙考,且生成后與源對(duì)象完全無(wú)關(guān),彼此獨(dú)立存在潭兽,改變互不影響倦始。例如c語(yǔ)言中的 int類(lèi)型。
對(duì)象語(yǔ)義:指一個(gè)對(duì)象由源對(duì)象拷貝生成山卦,且生成后與源對(duì)象依然保存著聯(lián)系鞋邑,共享底層資源,對(duì)任何一個(gè)的改變都將隨之改變另一個(gè)账蓉。python使用的就是這種對(duì)象語(yǔ)義枚碗。
值語(yǔ)義的好處就在于生成后的對(duì)象與源語(yǔ)義不再有聯(lián)系,這樣復(fù)制的對(duì)象操作性就比較強(qiáng)铸本,且不容易造成bug肮雨,不過(guò),因此值語(yǔ)義的代碼會(huì)比較復(fù)雜箱玷,我們需要花許多精力在存儲(chǔ)和設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)去獲得好的性能上怨规。而對(duì)象語(yǔ)義 python的不需要去考慮存儲(chǔ)問(wèn)題,python的變量與值是通過(guò)鏈接結(jié)構(gòu)來(lái)進(jìn)行聯(lián)系的锡足。對(duì)象與對(duì)象之間也是使用鏈接結(jié)構(gòu)來(lái)相互聯(lián)系波丰。這樣最直接的好處是提高了開(kāi)發(fā)人員的效率,我們不需要花時(shí)間在數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)上舱污,python內(nèi)部就已經(jīng)為我們很好地處理了呀舔,管理和存儲(chǔ)的問(wèn)題。當(dāng)然扩灯,這樣的弊端就是靈活性下降媚赖,對(duì)象語(yǔ)義本身也會(huì)帶來(lái)許多的bug。
使用python編程需要注意兩方面的事情第一珠插,我們不可避免需要自己設(shè)計(jì)一些數(shù)據(jù)結(jié)構(gòu)來(lái)提升效率惧磺。第二,我們需要清楚了解python高級(jí)數(shù)據(jù)結(jié)構(gòu)的性質(zhì)捻撑,才能有效的使用他們磨隘。
python的變量定義方式簡(jiǎn)單,不需特定的定義如c語(yǔ)言中定義一個(gè)變量的方式是 int c=1顾患,python的定義變量方式如下:
int c =1#c語(yǔ)言
c=1#python的數(shù)字類(lèi)型
d='hello,word'#字符串類(lèi)型
e=[1,2,3]#list類(lèi)型
由此可見(jiàn)python的變量預(yù)定義是在賦值的時(shí)候就定義了番捂,上面的例子中,c江解,d设预,e就被稱為變量,1犁河,'hello,word'鳖枕,[1,2,3]就是所對(duì)應(yīng)的的值魄梯。=視為賦值語(yǔ)句。
常量或者成為標(biāo)量
python語(yǔ)言中除了變量以外還有不可變的元素宾符,稱之為常量Python的常量有四類(lèi):
- int:整數(shù)酿秸。
- float:實(shí)數(shù)。
- bool:布爾型
- None:
python的變量的命名:在知道變量的作用是表示值魏烫。接下來(lái)需要了解的時(shí)如何給變量命名辣苏,python的變量名可以包含大小寫(xiě)字母和數(shù)字和下劃線,但是不能以數(shù)字開(kāi)頭且要避免使用關(guān)鍵字作為變量名则奥。關(guān)鍵字就是在系統(tǒng)中已經(jīng)被使用的單詞考润,不能被使用。
python3中保留的關(guān)機(jī)字有:and读处、as、assert(斷言)唱矛、break罚舱、class(類(lèi))、continue(繼續(xù))绎谦、def管闷、del、elif(判斷語(yǔ)句)窃肠、else(判斷語(yǔ)句)包个、execpt()、flase(非)冤留、finally(異常)碧囊、for(循環(huán))、from(導(dǎo)入)纤怒、global(全局)糯而、if(如果)、import(導(dǎo)入)泊窘、in(在)熄驼、is(是)、lambda(隱函數(shù))烘豹、nonlocal(非本地)瓜贾、none(空)、not(非)携悯、or(或者)祭芦、pass(占空)、raise(異常)蚌卤、return(返回)实束、true(真)奥秆、try(異常關(guān)鍵詞)、while(循環(huán)語(yǔ)句)咸灿、with(with語(yǔ)句)构订、yield(生成器)。
python3的掛技能見(jiàn)此常用的查看python類(lèi)型的函數(shù)時(shí)type避矢。
a=1
b='hello'
c=1.111
print(type(a),type(b),type(c))
<class 'int'> <class 'str'> <class 'float'>
接下來(lái)開(kāi)始介紹python的數(shù)據(jù)結(jié)構(gòu)悼瘾,python提供了許多標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)也有許多的操作审胸,通過(guò)python的這些標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)能夠更方便的進(jìn)行編程操作亥宿,接下來(lái)的學(xué)習(xí)目的是去看一看python的數(shù)據(jù)結(jié)構(gòu)和其操作。
python的數(shù)據(jù)結(jié)構(gòu)有:數(shù)字砂沛、列表(list)烫扼、元組(tupe)、字符串(string)碍庵、字典(dict)映企。
數(shù)字
數(shù)字是所有編程語(yǔ)言都會(huì)講到的一種數(shù)字結(jié)構(gòu),其表達(dá)的方式差別不大静浴,無(wú)非就是精度不同堰氓,就是在系統(tǒng)中所占的內(nèi)存不一樣,下列詳細(xì)的介紹苹享。
- 一般整數(shù):1,2,3,4,5(就是c語(yǔ)言中的長(zhǎng)整型双絮,也就是32位)
- 長(zhǎng)整型數(shù):9999999999999L(無(wú)限長(zhǎng)度)
- 浮點(diǎn)數(shù):1.2,1.44,3.14e-10(C語(yǔ)言中的雙精度)
- 八進(jìn)制和十六進(jìn)制:0177,0x99
- 復(fù)數(shù)常量:3+3j
- 二進(jìn)制:0b111(以0b開(kāi)頭)
- 八進(jìn)制:0o11(以0o開(kāi)頭)
- 十六進(jìn)制:0x22(以0x開(kāi)頭)
注意:在python3中int類(lèi)型就是指代長(zhǎng)整型數(shù)得问,不用再最后加'L'囤攀。
上述就是python3的數(shù)字的數(shù)據(jù)結(jié)構(gòu),伴隨著數(shù)字類(lèi)型椭赋,需要繼續(xù)介紹常用的運(yùn)算符抚岗,畢竟有了運(yùn)算符,數(shù)字?jǐn)?shù)據(jù)結(jié)構(gòu)就可以完成一些簡(jiǎn)單的編程哪怔。
運(yùn)算符
+(加法) -(減法) *(乘法) **取冪 /(除法) //(向下整除) %(取模) <<(左移) >>(右移) &(按位與)
|(按位或) ^(按位異或) ~按位取反 <(小于) >(大于) <=(小于等于) >=(大于等于) ==(等于) !=(不等于)
<>(不等于) +=(加法賦值) -=(減法賦值)*=(乘法賦值) /=(除法賦值) //=(整除賦值) %=(取模賦值) **=(取冪賦值)
&=(按位與賦值) |=(按位或賦值) ^=(按位異或賦值) >>=(左移賦值) <<= (右移賦值)
以上就是常用的一些運(yùn)算符宣蔚,下面將舉一些例子來(lái)對(duì)上述的運(yùn)算符和數(shù)字?jǐn)?shù)據(jù)結(jié)構(gòu)做一些運(yùn)算。
a=44
b=55
#加法
c=a+b
print(f'a+b={c}')
#減法
c=b-a
print(f'a-b={c}')
#乘法
c=b*a
print(f'a*b={c}')
#2次冪
c=a**2
print(f'a**b={c}')
#除法
c=b/a
print(f'ab={c}')
#向下整除
c=b//a
print(f'a+b={c}')
#取模
c=b%a
print(f'a+b={c}')
#加法賦值
b+=a
print(f'b+=a认境')
#減法賦值
b-=a
print(f'b-=a:胚委')
#乘法賦值
b*=a
print(f'b*=a:')
#除法賦值
b/=a
print(f'b/=a:叉信')
#整除賦值
b//=a
print(f'b//=a:亩冬')
#取模賦值
b%=a
print(f'b%=a:')
#取冪賦值
a**=2
print(f'b**=a:{a}')
#左移
d=0b001
c = d << 2
h=bin(c)
print(f'd左移{h}')
#右移
d=0b0100
c = d >>1
h=bin(c)
print(f'd左移{h}')
#按位與
a=0b0001
b=0b1000
c=a&b
print(f'按位與{bin(c)}')
#按位或
a=0b0001
b=0b1000
c=a|b
print(f'按位與{bin(c)}')
#按位異或
a=0b0001
b=0b1000
c=a^b
print(f'按位與{bin(c)}')
#按位取反
a=0b0001
b=0b1000
c = ~a
print(f'按位與{bin(c)}')
#小于
a=11
b=2
print(a<b)
#大于
a=11
b=2
print(a>b)
#等于
a=11
b=2
print(a==b)
#不等于
a=11
b=2
print(a!=b)
a+b=99
a-b=11
a*b=2420
a**b=1936
ab=1.25
a+b=1
a+b=11
b+=a99
b-=a:55
b*=a:2420
b/=a:55.0
b//=a:1.0
b%=a:1.0
b**=a:1936
d左移0b100
d左移0b10
按位與0b0
按位與0b1001
按位與0b1001
按位與-0b10
False
True
False
True
運(yùn)算符 有相應(yīng)的運(yùn)算優(yōu)先級(jí),優(yōu)先級(jí)用于數(shù)據(jù)結(jié)構(gòu)的符合運(yùn)算時(shí)計(jì)算順序硅急。下列列出運(yùn)算優(yōu)先級(jí):
1. lambda
2. or
3. and
4. not x
5. in覆享,not in
6. is,is not
7. <营袜,<=撒顿,>,>=荚板,!=凤壁,==
8. |
9. ^
10. &
11. <<,>>
12. +跪另,-
13. *拧抖,/,%
14. +x免绿,-x
15. ~x
16. **
17. x.attribute #列表
18. x[index] #列表
19. x[index:index]
20. f(arguments...)
21. (experession,...)
22. [expression,...]
23. {key:datum,...}
24. 'expression,...'
字符串
字符串是python中用于保存字符的數(shù)據(jù)結(jié)構(gòu)唧席,不同于c語(yǔ)言中的,python中沒(méi)有單個(gè)字符串這種數(shù)據(jù)結(jié)構(gòu)针姿,所有的字符都同一保存在字符串?dāng)?shù)據(jù)結(jié)構(gòu)中袱吆。字符串屬于不可變序列,所謂的序列就是一個(gè)有順序的點(diǎn)結(jié)構(gòu)距淫,不可變序列就是說(shuō)該序列結(jié)構(gòu)不能夠原地修改。
python3中有三種字符串接口婶希,使用這些接口能夠進(jìn)行字符串的轉(zhuǎn)換
- str:一個(gè)字符不易變序列-ASCLL,和更豐富的Unicode榕暇。
- bytes:一個(gè)不易變的短整型序列,用于二進(jìn)制數(shù)據(jù)的字節(jié)值喻杈。
- bytearray:字節(jié)的易變變量彤枢。
a=1
print(f'a的類(lèi)型為:{type(a)}',a)
b=str(a)
print(f'b的類(lèi)型為:{type(b)}',b)
c=bytes(a)
print(f'c的類(lèi)型為:{type(b)}',c)
d= bytearray(a)
print(f'd的類(lèi)型為:{type(b)}',d)
a的類(lèi)型為:<class 'int'> 1
b的類(lèi)型為:<class 'str'> 1
c的類(lèi)型為:<class 'str'> b'\x00'
d的類(lèi)型為:<class 'str'> bytearray(b'\x00')
<class 'str'>
在編程語(yǔ)言字符串中會(huì)包含一些特殊的字符如“\”這種的就稱之為轉(zhuǎn)義字符。
1. \newline 忽略換行
2. \\ 反斜杠(\)
3. \' 單引號(hào)(')
4. \" 雙引號(hào)(")
5. \a 蜂鳴(bell)
6. \b 空格
7. \f 換頁(yè)
8. \n 換行
9. \r 回車(chē)
10. \t 水平制表符
11. \v 豎直制表符
12. \other 非轉(zhuǎn)義字符
13. \O NULL
14. \OOO OCTAL
15. \xhh hex(最多兩位數(shù)字)
16. \uhhhh Unicode用4位十六進(jìn)制來(lái)表示一個(gè)字符
17. \uhhhhhhhh Unicode用8位十六進(jìn)制來(lái)表示一個(gè)字符
以上就是python中的轉(zhuǎn)義字符筒饰,接下來(lái)舉一些例子缴啡。
#換行
a='asdfghjkk\nsssssss'
print(a)
#反斜杠(\)
a='asdfghjkk\\'
print(a)
# 單引號(hào)(')
a='asdfghjkk\''
print(a)
#\雙引號(hào)(")
a='asdfghjkk\"'
print(a)
#蜂鳴(bell)
a='asdfghjkk\a'
print(a)
#空格
a='asdfghjkk\bssss'
print(a)
#換頁(yè)
a='asdfghjkk\fssss'
print(a)
#回車(chē)
a='asdfghjkk\rssss'
print(a)
#水平制表符
a='asdfghjkk\tssss'
print(a)
#豎直制表符
a='asdfghjkk\vssss'
print(a)
#非轉(zhuǎn)義字符
a='asdfghjkk\ vssss'
print(a)
#NULL
a='asdfghjkk\0vssss'
print(a)
#Unicode十六位字符串
s = u'py\x74h\u4e2don'
print(s)
asdfghjkk
sssssss
asdfghjkk\
asdfghjkk'
asdfghjkk"
asdfghjkk?
asdfghjkkssss
asdfghjkkssss
ssss
asdfghjkk ssss
asdfghjkk?ssss
asdfghjkk\ vssss
asdfghjkkvssss
pyth中on
字符串方法
中所周知,pyhon的簡(jiǎn)單與便利源于眾多的內(nèi)置數(shù)據(jù)結(jié)構(gòu)和其所對(duì)應(yīng)的的方法瓷们。熟練的掌握這些方法能夠高效的進(jìn)行編程业栅。
```
1. lambda
2. or
3. and
4. not x
5. in,not in
6. is谬晕,is not
7. <碘裕,<=,>攒钳,>=帮孔,!=,==
8. |
9. ^
10. &
11. <<不撑,>>
12. +文兢,-
13. *晤斩,/,%
14. +x姆坚,-x
15. ~x
16. **
17. x.attribute #列表
18. x[index] #列表
19. x[index:index]
20. f(arguments...)
21. (experession,...)
22. [expression,...]
23. {key:datum,...}
24. 'expression,...'
字符串格式化
字符串格式化的意思是就是一個(gè)字符串中如果其中有一個(gè)片段需要用一個(gè)變量代替澳泵,這種方式叫做字符串格式化。
python中有兩種方式實(shí)現(xiàn)一種是%運(yùn)算符旷偿,一種是{}置換對(duì)象烹俗。接下來(lái)看一看{}的使用方式。
{}源于 str.format(),在使用的時(shí)候使用{}和:去代替以往的%作為置換對(duì)象萍程。同時(shí)也提拱了許多類(lèi)似于索引幢妄,切片的操作。
```python
#{}表達(dá)方式
a='KD'
b='curry'
c='green'
print('2018 nba FMVP is {},or {},or {}?'.format(a,b,c))# 不設(shè)置指定位置茫负,按默認(rèn)順序
print('2018 nba FMVP is {1},or {0},or {2}?'.format(a,b,c))# 設(shè)置指定位置
print('2018 nba FMVP is {1},or {0},or {2}? is {d[4]} '.format(a,b,c,d='kbbrant'))#索引制定關(guān)鍵字d的字符串的第五個(gè)字符
#配合:使用
print('2019 year have {:.2f}'.format(3))#對(duì)于數(shù)字保留小數(shù)點(diǎn)后兩位
print('2019 year have {:.0f}'.format(3.1415))#對(duì)于數(shù)字不保留小數(shù)
print('2019 year have {:0>2d}'.format(3))#用數(shù)字1去填充蕉鸳,寬度為2,>表示填充左邊
print('2019 year have {:,}'.format(3123000))#用,分割數(shù)字,沒(méi)三位一分
print('2019 year have {:.3%}'.format(31.2))#用%表示百分比,指數(shù)的話將%替代為e
2018 nba FMVP is KD,or curry,or green?
2018 nba FMVP is curry,or KD,or green?
2018 nba FMVP is curry,or KD,or green? is a
2019 year have 3.00
2019 year have 3
2019 year have 03
2019 year have 3,123,000
2019 year have 3120.000%
除了上述以外的操作還有
^, <, > 分別是居中忍法、左對(duì)齊潮尝、右對(duì)齊,后面帶寬度饿序, : 號(hào)后面帶填充的字符勉失,只能是一個(gè)字符,不指定則默認(rèn)是用空格填充原探。
+ 表示在正數(shù)前顯示 +乱凿,負(fù)數(shù)前顯示 -; (空格)表示在正數(shù)前加空格
b咽弦、d徒蟆、o、x 分別是二進(jìn)制型型、十進(jìn)制段审、八進(jìn)制、十六進(jìn)制闹蒜。
#之前的print(f'a的類(lèi)型為:{type(a)}')這種寫(xiě)法是print('a的類(lèi)型為:{type(a)}'.format(a))的簡(jiǎn)寫(xiě)寺枉,也是可以的。
上述簡(jiǎn)單介紹了字符串格式化中{}方法的使用嫂用,然后在對(duì)%運(yùn)算的方法做一個(gè)介紹型凳。
%運(yùn)算符實(shí)現(xiàn)字符串格式化的方法和c語(yǔ)言中的類(lèi)似,都是使用%加一個(gè)關(guān)鍵的方式去實(shí)現(xiàn)對(duì)應(yīng)的字符串的格式化嘱函。
s 字符串
r 字符串(使用repr())
c 字符(int 或 str)
d 小數(shù)(基于整數(shù)10)
i 整數(shù)
o 八進(jìn)制
x 十六進(jìn)制
X 大寫(xiě)的x
e 浮點(diǎn)指數(shù)
E 大寫(xiě)的e
f 浮點(diǎn)數(shù)
F 大寫(xiě)的f
% 字面的%
g 浮點(diǎn)e或者f
G 大寫(xiě)的g
#實(shí)例
print(' i am a %s,i am %d year old'%('man',21))
i am a man,i am 21 year old
字符串有許多的操作方法甘畅,熟悉這些操作方法能夠靈活的使用字符串結(jié)構(gòu)應(yīng)用于各種重大任務(wù)中。下列就對(duì)這些方法進(jìn)行詳細(xì)介紹:
#創(chuàng)建字符串
s1=' My name is Linus Torvalds and I am your god.'
s2='linux'
#字符串表達(dá)式
#字符串拼接
print('字符串拼接',s1+s2)
#字符串重復(fù)3次
print('字符串重復(fù)3次',s2*3)
#字符串索引
print('第十三個(gè)字符',s1[12])#第十三個(gè)字符
#字符串切片,字符串的某一段
print('從第二個(gè)字符到第十三個(gè)字符',s1[1:12])#從第二個(gè)字符到第十三個(gè)字符
#求字符串的長(zhǎng)度
print('字符串的長(zhǎng)度',len(s1))
#字符串方法
#把字符串的第一個(gè)字符小寫(xiě)
print('把字符串的第一個(gè)字符小寫(xiě)',s1.capitalize())
#返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度 width 的新字符串
print('填充',s2.center(20))#返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度 width 的新字符串
#返回 str 在 string 里面出現(xiàn)的次數(shù)疏唾,如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
print('m 在 s1中出現(xiàn)的次數(shù)',s1.count('m'))
#檢查字符串是否以 obj 結(jié)束蓄氧,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是槐脏,返回 True,否則返回 False.
print('s1 是否以 god 結(jié)束',s1.endswith('god'))
#檢測(cè) str 是否包含在 string 中喉童,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內(nèi)顿天,如果是返回開(kāi)始的索引值堂氯,否則返回-1
print(s1.find('god'))
#格式化
s1.format()
#同find
s1.index('god')
#如果 string 至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返ture
print('s`中是否全是字母或者數(shù)字',s1.isalnum())
#如果 string 至少有一個(gè)字符并且所有字符都是字母則返回 True,否則返回 False
print('s1 中都是字符?',s1.isalpha())
#如果 string 只包含十進(jìn)制數(shù)字則返回 True 否則返回 False.
print(s1.isdecimal())
#如果 string 只包含十進(jìn)制數(shù)字則返回 True 否則返回 False.
print('s1中是否包含十進(jìn)制數(shù)',s1.isdecimal())
#如果 string 只包含數(shù)字則返回 True 否則返回 False.
print('s1是否只包含數(shù)字',s1.isdigit())
#如果 string 中包含至少一個(gè)區(qū)分大小寫(xiě)的字符牌废,并且所有這些(區(qū)分大小寫(xiě)的)字符都是小寫(xiě)咽白,則返回 True,否則返回 False
print('s2 是否全為者小寫(xiě)',s2.islower())
#如果 string 中只包含數(shù)字字符鸟缕,則返回 True晶框,否則返回 False
print('s1中只包含數(shù)字',s1.isnumeric())
#如果 string 是標(biāo)題化的(見(jiàn) title())則返回 True,否則返回 False
print('如果 s1全為大寫(xiě)',s1.isupper())
#以 string 作為分隔符懂从,將 seq 中所有的元素(的字符串表示)合并為一個(gè)新的字符串
print(' '.join(s2))
#轉(zhuǎn)換 string 中所有大寫(xiě)字符為小寫(xiě).
print('s1 中所有大寫(xiě)為小寫(xiě)',s1.lower())
#返回字符串 str 中最大的字母授段。
print('s2中最大的字母為:',max(s2))
#返回字符串 str 中最小的字母。
print('s1中最大的字母為:',min(s2))
#把 string 中的 str1 替換成 str2,如果 num 指定番甩,則替換不超過(guò) num 次.
print('s1中my換成',s1.replace('My','ss'))
#
print('以 str 為分隔符切片 string',s1.split())
#轉(zhuǎn)換 string 中的小寫(xiě)字母為大寫(xiě)
print('小寫(xiě)字母轉(zhuǎn)換大寫(xiě)',s2.upper())
字符串拼接 My name is Linus Torvalds and I am your god.linux
字符串重復(fù)3次 linuxlinuxlinux
第十三個(gè)字符 L
從第二個(gè)字符到第十三個(gè)字符 My name is
字符串的長(zhǎng)度 45
把字符串的第一個(gè)字符小寫(xiě) my name is linus torvalds and i am your god.
填充 linux
m 在 s1中出現(xiàn)的次數(shù) 2
s1 是否以 god 結(jié)束 False
41
s`中是否全是字母或者數(shù)字 False
s1 中都是字符侵贵? False
False
s1中是否包含十進(jìn)制數(shù) False
s1是否只包含數(shù)字 False
s2 是否全為者小寫(xiě) True
s1中只包含數(shù)字 False
如果 s1全為大寫(xiě) False
l i n u x
s1 中所有大寫(xiě)為小寫(xiě) my name is linus torvalds and i am your god.
s2中最大的字母為: x
s1中最大的字母為: i
s1中my換成 ss name is Linus Torvalds and I am your god.
以 str 為分隔符切片 string ['My', 'name', 'is', 'Linus', 'Torvalds', 'and', 'I', 'am', 'your', 'god.']
小寫(xiě)字母轉(zhuǎn)換大寫(xiě) LINUX
以上就是字符串?dāng)?shù)據(jù)結(jié)構(gòu)大部分的方法,其余的方法可以見(jiàn)python的標(biāo)準(zhǔn)庫(kù)缘薛。介紹完字符串以及字符串的方法模燥,接下來(lái)介紹的時(shí)另一種python中很關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)列表栗弟。
列表
list
列表(list)是一種可變序列所以支持原地修改扰她,又稱為容器序列旦事,因?yàn)榱斜淼目梢园瑪?shù)字、字符串牺汤、序列、列表等浩嫌。因?yàn)槭切蛄虚艹伲粤斜碛许樞颍?lèi)似于c語(yǔ)言中的數(shù)組码耐,列表可以通過(guò)列表對(duì)象的偏移量來(lái)進(jìn)行取值追迟。了解過(guò)列表是什么,接下來(lái)繼續(xù)了解列表創(chuàng)建方法和自帶方法骚腥。
#列表的創(chuàng)建
a=[]#創(chuàng)建一個(gè)空列表
b=[1,2,3,4]#索引從0~3的數(shù)字列表
c=['a','b','c','b']#索引從0`3的字串列表
d=[[333],[2],[23],[33]]#索引為0~3的列表列表
dd='Talk is cheap. Show me the code.'
f=list(dd)
print('空列表',a)
print('數(shù)字列表',b)
print('字符串列表',c)
print('列表列表',d)
print('字符串列表',f)
#索引
print('f列表的索引',f[1])
#切片
print('f列表的切片',f[1:5])
#原地修改賦值
f[1]='w'
print('修改后的f',f)
#原地切片賦值
f[1:4]='wrle'
print('修改后的f',f)
#列表方法
#更新列表
k=[]
k.append('Google')#給列表追加字符
k.append('linux')
print('更新列表為',k)
#刪除列表元素
del k[0]
print('刪除列表后',k)
#列表拼接
c.extend(b)#在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表)
print('列表拼接',c)
#統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
cou=c.count('b')
print('c在某個(gè)元素中出現(xiàn)的次數(shù)',cou)
#從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置
index=c.index('a')
print('a 在c中的位置',index)
#將對(duì)象插入列表
c.insert(1,'ggg')
print('將字符串插入c',c)
#移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素)敦间,并且返回該元素的值
b.pop()
print('移除最后一個(gè)元素',b)
#移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)
c.remove(1)
print('移除匹配的1',c)
#反向列表中元素
b.reverse()
print('反向列表b中元素',b)
#排序
b.sort()
print('排序后的b',b)#從小到大排序
空列表 []
數(shù)字列表 [1, 2, 3, 4]
字符串列表 ['a', 'b', 'c', 'b']
列表列表 [[333], [2], [23], [33]]
字符串列表 ['T', 'a', 'l', 'k', ' ', 'i', 's', ' ', 'c', 'h', 'e', 'a', 'p', '.', ' ', 'S', 'h', 'o', 'w', ' ', 'm', 'e', ' ', 't', 'h', 'e', ' ', 'c', 'o', 'd', 'e', '.']
f列表的索引 a
f列表的切片 ['a', 'l', 'k', ' ']
修改后的f ['T', 'w', 'l', 'k', ' ', 'i', 's', ' ', 'c', 'h', 'e', 'a', 'p', '.', ' ', 'S', 'h', 'o', 'w', ' ', 'm', 'e', ' ', 't', 'h', 'e', ' ', 'c', 'o', 'd', 'e', '.']
修改后的f ['T', 'w', 'r', 'l', 'e', ' ', 'i', 's', ' ', 'c', 'h', 'e', 'a', 'p', '.', ' ', 'S', 'h', 'o', 'w', ' ', 'm', 'e', ' ', 't', 'h', 'e', ' ', 'c', 'o', 'd', 'e', '.']
更新列表為 ['Google', 'linux']
刪除列表后 ['linux']
列表拼接 ['a', 'b', 'c', 'b', 1, 2, 3, 4]
c在某個(gè)元素中出現(xiàn)的次數(shù) 2
a 在c中的位置 0
將字符串插入c ['a', 'ggg', 'b', 'c', 'b', 1, 2, 3, 4]
移除最后一個(gè)元素 [1, 2, 3]
移除匹配的1 ['a', 'ggg', 'b', 'c', 'b', 2, 3, 4]
反向列表b中元素 [3, 2, 1]
排序后的b [1, 2, 3]
以上就是列表的一些方法和表達(dá)方式,了解以上列表創(chuàng)建方式和方法就能基本的使用好列表。接下來(lái)介紹的時(shí)另一種數(shù)據(jù)結(jié)構(gòu)廓块,字典厢绝。
字典
字典(dict),這是一種可變序列带猴,所以也可以原地修改昔汉,字典和列表一樣是非常靈活的一種容器數(shù)據(jù)結(jié)構(gòu),和列表不同的是拴清,字典是屬于無(wú)序集合靶病,同時(shí)字典是通過(guò)鍵值來(lái)存儲(chǔ)數(shù)據(jù)的不是通過(guò)對(duì)象偏移量。以下是字典數(shù)據(jù)結(jié)構(gòu)的一些創(chuàng)建和方法口予。
#創(chuàng)建
dic={}#空字典
dic1={'鍵':'值','ss':'kk'}#這創(chuàng)建了兩個(gè)字符串字典娄周,該鍵和值所對(duì)應(yīng)的是‘鍵’字符串和‘值’字符串
print('dic1字典',dic1)
dic2={'kk':{'鍵':'值'}}#字典嵌套
print('字典嵌套',dic2)
#索引
print('字典通過(guò)鍵值索引',dic1['ss'])
print('字典通過(guò)鍵值索引',dic2['kk']['鍵'])#嵌套索引
#賦值修改值
dic2['kk']['鍵']='花花'
print('字典通過(guò)鍵值賦值修改',dic2['kk']['鍵'])
#刪除鍵值
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict1['Name'] # 刪除鍵是'Name'的條目
print('刪除name的字典',dict1)
dict1.clear() # 清空字典所有條目
print('刪除所有的鍵值',dict1)
del dict1 # 刪除字典
#返回一個(gè)字典的淺復(fù)制
dict2=dic2.copy()#
print('復(fù)制后的字典',dict2)
#創(chuàng)建一個(gè)新字典,以序列 seq 中元素做字典的鍵苹威,val 為字典所有鍵對(duì)應(yīng)的初始值
key=['a','b','c']
value=['c','b','a']
dict4=dict.fromkeys(key,value)
print('新創(chuàng)建的字典',dict4)
#返回指定鍵的值昆咽,如果值不在字典中返回default值
print('f返回字典值',dict4.get('a'))
#以列表返回可遍歷的(鍵, 值) 元組數(shù)組
print('f返回字典值',dict4.items())
#以列表返回一個(gè)字典所有的鍵
print('字典中所有鍵',dict4.keys())
#以列表返回字典中的所有值
print('字典中所有值',dict4.values())
#刪除字典給定鍵 key 所對(duì)應(yīng)的值,返回值為被刪除的值牙甫。key值必須給出掷酗。 否則,返回default值窟哺。
print('刪除字典中指定值',dict4.pop('b'))
dic1字典 {'鍵': '值', 'ss': 'kk'}
字典嵌套 {'kk': {'鍵': '值'}}
字典通過(guò)鍵值索引 kk
字典通過(guò)鍵值索引 值
字典通過(guò)鍵值賦值修改 花花
刪除name的字典 {'Age': 7, 'Class': 'First'}
刪除所有的鍵值 {}
復(fù)制后的字典 {'kk': {'鍵': '花花'}}
新創(chuàng)建的字典 {'a': ['c', 'b', 'a'], 'b': ['c', 'b', 'a'], 'c': ['c', 'b', 'a']}
f返回字典值 ['c', 'b', 'a']
f返回字典值 dict_items([('a', ['c', 'b', 'a']), ('b', ['c', 'b', 'a']), ('c', ['c', 'b', 'a'])])
字典中所有鍵 dict_keys(['a', 'b', 'c'])
字典中所有值 dict_values([['c', 'b', 'a'], ['c', 'b', 'a'], ['c', 'b', 'a']])
刪除字典中指定值 ['c', 'b', 'a']
上述就是python中字典這種數(shù)據(jù)結(jié)構(gòu)泻轰,接下介紹另一種數(shù)據(jù)結(jié)構(gòu)元組。
元組
元組和列表類(lèi)似所以元組的方法和列表大多相同且轨,不同的是元組是不可變序列浮声,所以不能再原地修改。接下來(lái)介紹一下元組的創(chuàng)建和方法旋奢。
#創(chuàng)建
t1=()#空元組
t2=(1,2,3)#數(shù)字元組
t3=(1,'kk',[12])#綜合元組
t4=((11,22),'kk',([12]))#嵌套元組
print(t1,t2,t3,t4)
#索引
print('t4索引',t4[1])
print('t4嵌套索引',t4[0][1])#嵌套索引
print('t4切片索引',t4[0:3])#切片索引
print('t4切片索引',t4[0:3])#切片索引
#合并
print('t4合并',t2+t3)#切片索引
#重復(fù)
print('t2重復(fù)',t2*3)
() (1, 2, 3) (1, 'kk', [12]) ((11, 22), 'kk', [12])
t4索引 kk
t4嵌套索引 22
t4切片索引 ((11, 22), 'kk', [12])
t4切片索引 ((11, 22), 'kk', [12])
t4合并 (1, 2, 3, 1, 'kk', [12])
t2重復(fù) (1, 2, 3, 1, 2, 3, 1, 2, 3)
集合
集合是一種易變的聚集泳挥,非順序,非映射集合支持?jǐn)?shù)學(xué)上的集合運(yùn)算至朗,集合內(nèi)容只能是不變對(duì)象屉符,就是說(shuō)不可以是字典和列表,且內(nèi)容不重復(fù)锹引。
#創(chuàng)建
set1=set()#創(chuàng)建空集
set2={'111','222','333'}
集合的相關(guān)操作見(jiàn)pyhton標(biāo)準(zhǔn)庫(kù)矗钟。
python語(yǔ)句
python的語(yǔ)法規(guī)則是由表達(dá)式和語(yǔ)句構(gòu)成的,上面已經(jīng)介紹完了各種數(shù)據(jù)結(jié)構(gòu)和其自帶的方法嫌变,有這些就構(gòu)成了表達(dá)式吨艇。語(yǔ)句功能是聯(lián)系這些表達(dá)式,或者具有特定的功能腾啥,接下來(lái)詳細(xì)的介紹东涡。
賦值語(yǔ)句
賦值語(yǔ)句的標(biāo)志是‘=’冯吓,上文中提到過(guò)python中使用的是對(duì)象語(yǔ)義,變量和對(duì)象使用的鏈接的方式软啼,可以說(shuō)賦值語(yǔ)句的作用就是將變量和對(duì)象鏈接起來(lái)桑谍,不僅如此,對(duì)象通過(guò)賦值語(yǔ)句對(duì)變量完成初始化祸挪。python中的賦值語(yǔ)句有四種:
- 基本賦值語(yǔ)句: a=b
- 多目標(biāo)賦值語(yǔ)句 a=b=c
- 順序賦值語(yǔ)句 a,b,c,d='1','2','3','4'
- 增量賦值語(yǔ)句 a+=2
一般情況下锣披,順序賦值的對(duì)象是自左向右的賦值給變量,所以要求對(duì)象和變量的長(zhǎng)度相等贿条。除非下列這種方式:
- a,*b='1','2','3','4' 這樣的方式稱為擴(kuò)展序列賦值
#基本賦值雹仿,常用語(yǔ)對(duì)象的變量初始化
a=1
#多目標(biāo)賦值,給多個(gè)變量賦值相同的對(duì)象整以,
c=d=12
print('c:%i,d為%i'%(c,d))
#元組賦值
(q,w,e,r)=1,2,3,4
print('元組賦值為',(q,w,e,r))
#擴(kuò)展序列將1賦值給a,剩下的賦值給b
a,*b=1,2,3,4
print(a,b)
#增量賦值就是運(yùn)算符中介紹的
a+=d#相當(dāng)于a=a+d
print('增量賦值',a)
c:12,d為12
元組賦值為 (1, 2, 3, 4)
1 [2, 3, 4]
增量賦值 13
表達(dá)式語(yǔ)句
表達(dá)式語(yǔ)句沒(méi)有說(shuō)明沒(méi)有返回結(jié)果胧辽,也不會(huì)保存在內(nèi)存中。表達(dá)式語(yǔ)句有兩種:
- 用于print語(yǔ)句中
- 用于函數(shù)調(diào)用后不需要返回值
print語(yǔ)句
print語(yǔ)句是打印語(yǔ)句公黑,在上文中可以明顯的看到邑商,使用prin語(yǔ)句用于輸出變量的值并且,print是用‘凡蚜,’去分不同的變量人断。
#print語(yǔ)句打印
print('my name is linus ,i am your god',32,[21])
my name is linus ,i am your god 32 [21]
if 語(yǔ)句
if語(yǔ)句被稱為是分支語(yǔ)句,if和elif和else共同組成了程序語(yǔ)言中的條件語(yǔ)句:
#if
a1=1
a2=2
if a1+a2==2 :#a1+a2=2為真執(zhí)行語(yǔ)句
print('結(jié)果為2')
elif a1+a2>2: #a1+a2>2為真執(zhí)行語(yǔ)句
print('結(jié)果不為2')
else:#以上條件不為真執(zhí)行
print('都不對(duì)')
結(jié)果不為2
while語(yǔ)句
while語(yǔ)句意思是結(jié)果為真就一直循環(huán)的語(yǔ)句朝蜘。
for語(yǔ)句
for語(yǔ)句是一個(gè)序列的迭代恶迈。
#for語(yǔ)句
die=[1,2,3,4,5]#這是一個(gè)列表也是一個(gè)序列
for i in die:#for 語(yǔ)句會(huì)將die序列中每一個(gè)值賦值給i,并執(zhí)行語(yǔ)句。
print(i)#打印出所有的i值
#若果序列是一個(gè)數(shù)字序列谱醇,就可以表示為循環(huán)
for i in die:#有5個(gè)數(shù)暇仲,循環(huán)五次
print('循環(huán)%i次'%i)
1
2
3
4
5
循環(huán)1次
循環(huán)2次
循環(huán)3次
循環(huán)4次
循環(huán)5次
pass語(yǔ)句
pass語(yǔ)句是一個(gè)什么都不做的占位語(yǔ)句,目的就是在一個(gè)函數(shù)或者一個(gè)語(yǔ)句中副渴,不清楚需要做什么是用來(lái)占位奈附,避免報(bào)錯(cuò)的語(yǔ)句
break語(yǔ)句
break語(yǔ)句用于跳出最近的一個(gè)while或者for循環(huán)。
continue語(yǔ)句
continue語(yǔ)句用于跳出最近的一個(gè)while或者for循環(huán)回到循環(huán)的頂部煮剧。
del 語(yǔ)句
del 語(yǔ)句用于刪除變量桅狠,項(xiàng)目轿秧,鍵菇篡,分片驱还,屬性议蟆。
def 語(yǔ)句
def 語(yǔ)句用于創(chuàng)建新的函數(shù)或者方法咐容。
return語(yǔ)句
退出函數(shù)并返回一個(gè)表達(dá)式戳粒。
yield語(yǔ)句
創(chuàng)建返回一個(gè)生成器對(duì)象。
global語(yǔ)句
命名空間修改或者創(chuàng)建全局變量
nonlocal語(yǔ)句
聲明為局部變量引用
import\from語(yǔ)句
模塊導(dǎo)入語(yǔ)句
class語(yǔ)句
創(chuàng)建一個(gè)類(lèi)
try/except/finally語(yǔ)句
捕捉異常
raise語(yǔ)句
引發(fā)異常
with/as語(yǔ)句
環(huán)境管理
assert語(yǔ)句
調(diào)試檢查
exec語(yǔ)句
執(zhí)行代碼字符串
上述就是python中的語(yǔ)句,某些相關(guān)的語(yǔ)句會(huì)會(huì)在后面介紹砸抛,至此树枫,python的數(shù)據(jù)結(jié)構(gòu)和表達(dá)式語(yǔ)句部分就大概的介紹完了箕般,通過(guò)上的內(nèi)容就能編寫(xiě)一些腳本舔清,想要編寫(xiě)更復(fù)雜的腳本還需要學(xué)習(xí)函數(shù)與類(lèi)的相關(guān)知識(shí)杯聚。