Python(1)—— 選擇結構劲蜻,循環(huán)結構陆淀,字符串和列表

一、Python的基礎知識:

*基礎知識: ROM是只讀內存先嬉,用于存儲操作系統(tǒng)轧苫,存進去以后只能讀取不能修改;RAM是隨機內存疫蔓。一般寬帶帶寬Mb的b是bit位含懊,而音視頻內容的大小是單位Mb的b是bytes,字節(jié)衅胀。蘋果手機的三層架構:硬件層+操作系統(tǒng)層+軟件層岔乔;安卓手機的四層架構:硬件層+linux操作系統(tǒng)層+java虛擬機+軟件層;機器語言——匯編語言——中級語言(C語言)——高級語言

—— 關于Python的常識:

????* Python的發(fā)音與拼寫

????* Python的作者是Guido van Rossum(龜叔)

????* Python正式誕生于1991年

????* Python的解釋器如今有多個語言實現(xiàn)滚躯,我們常用的是CPython(官方版本的C語言實現(xiàn))雏门,其他還有Jython(可以運行在Java平臺)、IronPython(可以運行在.NET和Mono平臺)掸掏、PyPy(Python實現(xiàn)的茁影,支持JIT即時編譯)

????* Python目前有兩個版本,Python2和Python3丧凤,最新版分別為2.7.13和3.6.2

????* Life is shot, you need Python. 人生苦短呼胚,我用Python。

—— Python的優(yōu)缺點

????優(yōu)點:

????簡單息裸,免費開源蝇更,可移植性,解釋性語言(Javascript和Python都是呼盆,其他的C是編譯型語言)年扩,面向對象,萬事萬物皆對象(相對的是面向過程访圃,只有C語言是面向過程的),可擴展性(只要有人寫這個擴展程序,就能完成這個功能)囚巴,豐富的庫(一般庫就是框架驻粟,但小而精的庫,大而全是框架批糟,寫程序的一個模板)格了,規(guī)范的代碼(采用強制縮進使其有很強的可讀性)

????缺點:

????唯一的缺點就是執(zhí)行效率慢,這個是解釋型語言所通有的徽鼎,同時這個缺點也將被計算機越來越強大的性能所彌補盛末。

—— Python的應用場景

????Web自動化,移動端自動化否淤,Web應用開發(fā)悄但,操作系統(tǒng)管理、服務器運維的自動化腳本石抡,網(wǎng)絡爬蟲檐嚣,科學計算(人工智能,自動駕駛)啰扛,桌面軟件嚎京,服務器軟件(網(wǎng)絡軟件),游戲(游戲多是C++和Lua配合來寫侠讯,Python可以寫一些輔助的功能)挖藏,構思實現(xiàn),產(chǎn)品早期原型和迭代

????*前臺:前端(html厢漩,瀏覽器)膜眠,ios,Android做出的產(chǎn)品溜嗜;后臺:php宵膨,python,java炸宵,.net后臺語言辟躏;IDE的意思是集成開發(fā)環(huán)境;Django和Flask都是Python的框架土全,程序員會用這些框架寫程序捎琐,測試時就是測這些框架会涎;Pycharm要運行一個項目,需要有一個interpreter瑞凑,python解析器末秃,把代碼解析成為機器認識的語言。

二籽御、Python的正式學習:

1练慕、注釋:

注釋的寫法:

? ? - 單行注釋:只能注釋一行;'# ' 號后面的內容都會被注釋掉技掏;快捷鍵:? ctrl + /? ? 取消的快捷鍵:? ctrl? +? /铃将;注釋內容是什么都可以,隨意寫

? ? - 多行注釋:可以同時注釋多行? ? (用單行注釋也可以實現(xiàn));多行注釋寫法:? ? ''' 注釋內容'''? ? 或者? """注釋內容"""哑梳;多行注釋沒有快捷鍵

注釋的作用:能夠大大增強程序的可讀性劲阎;能夠使用注釋進行代碼測試;能夠幫助我們快速理解別人寫的代碼與邏輯

補充: python程序中的中文支持:

- python3.x解析器中涧衙,是默認支持中文的哪工,但是在python2.x解析器中就需要一定的額外設置才可以

- 如果需要在python2.x的解析器中使用中文,需要在每個.py文件的最前端寫上如下代碼:

? ```python

? # coding=utf-8

? ```

? 否則會報錯.

- 另外,python官方建議最好的書寫形式為:

? ```python

? # -*- coding:utf-8 -*-

? ```

?當然,這兩種都是可行的.作用一樣.

2、變量

python中,在程序運行時,可以隨著程序的運行更改的量成為變量弧哎。簡單理解: 變量就是用來臨時存儲數(shù)據(jù)的容器雁比。

使用變量的好處:提高人效,定義一處,多處使用; 提高開發(fā)效率撤嫩;敏捷開發(fā)(短周期的開發(fā))偎捎;測試自動化

3、變量的類型

程序中,為了更充分的利用內存空間以及更有效率的管理內存序攘,變量是有不同的類型的茴她。

int (有符號整形), float (浮點數(shù)程奠,包括負小數(shù)和正小數(shù))丈牢,bool (布爾),str (字符串) —— 全寫: string
(Long瞄沙,長整形己沛,也可以代表八進制和十六進制;Complex距境,復數(shù)型申尼;List,列表垫桂;Truple师幕,元祖;Dictionary诬滩,字典)

# str(字符串)類型定義的形式: 或者‘字符串的內容’
name = "這里是字符串的內容"

# int(有符號整數(shù))類型定義的形式:
age = 10

# float(浮點數(shù))類型定義的形式:
# 在java中有double(雙精度)霹粥,float是單精度灭将,python中沒有double
height = 100.00

# bool(布爾)類型定義的形式: Ture的T要大寫,F(xiàn)alse的F要大寫
is_man = True

python自動管理數(shù)據(jù)類型:? 在python中后控,只要定義了一個變量宗侦,而且它有數(shù)據(jù),那么它的類型就已經(jīng)確定了忆蚀,不需要咱們開發(fā)者主動的去說明它的類型,系統(tǒng)會自動辨別姑裂。我們可以使用 type(變量的名字或者數(shù)值) 來查看變量的類型:

is_man = True
print(type(is_man))

?# 得到的結果為:
?# <class 'bool'>

4馋袜、標識符

關鍵字,變量名以及我們后面會學習到的函數(shù)名,類名,模塊名等都是標識符.

?標識符有一個大的規(guī)則: 由字母舶斧、下劃線和數(shù)字組成欣鳖,且數(shù)字不能開頭;標識符區(qū)分大小寫?

?標識符有不同的命名形式: 但規(guī)則是見名知意?

駝峰命名法
* 小駝峰式命名法(lower camel case): 第一個單詞以小寫字母開始茴厉;第二個單詞的首字母大寫泽台,例如:myName、aDog

* 大駝峰式命名法(upper camel case): 每一個單字的首字母都采用大寫字母矾缓,例如:FirstName怀酷、LastName

?* 還有一種命名法是用下劃線“_”來連接所有的單詞: 比如: send_func

?關鍵字是Python官方規(guī)定的一些標識符,我們盡量不要定義成相同的名字,免得出錯。

查看關鍵字: python
?# 導入模塊
import keyword

# 查看這個python版本的關鍵字
?print(keyword.kwlist)

python3.x中的關鍵字有:?
?> and as assert break class continue def del
?> elif else except exec finally for from global
?> if in import is lambda not or pass
?> print raise return try while with yield

?也可以在Python Shell(shift+鼠標右鍵)通過以下命令進行查看當前系統(tǒng)中python的關鍵字? ? import keyword
? keyword.kwlist?

5嗜闻、輸出

格式化輸出:指通過print()等函數(shù)向指定的地方(比如屏幕)輸出指定格式的內容

#一般格式化輸出:一個等號叫賦值蜕依,兩個等號才是等于
name = "xiaohua"?
age+=1
print("我的姓名是%s, 年齡是%d" % (name, age))

# 默認情況下 Python使用%f 會保留小數(shù)點后面六位?
print("我的身高:%.2f" % my_height)?

# 如果想打印一個bool值,如果想顯示True,或者False 要使用%s?
# 如果想顯示1 或者 0 要使用%d?
# 是否是男性 False?
print("是否是男性:%s" % is_man)?
# 是否是男性:0?
print("是否是男性:%d" % is_man)??

#換行輸出:在輸出的時候,如果有`\n`那么琉雳,此時`\n`后的內容會在另外一行顯示
#換行符:\n
# 一行顯示1234567890样眠,另外一行顯示-------?
print("1234567890\n-------")

# 單純一個\ 需要書寫兩個\\??
# 如果我就是想顯示你好\n世界?
print("你好\\n世界")

# 單純一個% 需要書寫兩個%%??
num = 98?
# 成活率達到了98%?
print("成活率達到了%d%%" % num)

#制表符:\t,tab==四個空格
#輸出是hello? ? world
print("hello\tworld")

下面是完整的翠肘,它可以與%符號使用列表:?
| 格式符號 | 轉換 |?
| ---- | :------------: |?
| %c | 字符 |?
| %s | 字符串 |?
| %d | 有符號十進制整數(shù) |?
| %u | 無符號十進制整數(shù) |?
| %o | 八進制整數(shù) |?
| %x | 十六進制整數(shù)(小寫字母0x) |?
| %X | 十六進制整數(shù)(大寫字母0X) |?
| %f | 浮點數(shù) |?
| %e | 科學計數(shù)法(小寫'e') |?
| %E | 科學計數(shù)法(大寫“E”) |
| %g | %f和%e 的簡寫 |
| %G | %f和%E的簡寫 |

6檐束、輸入:

python2.x 和 python3.x 輸入的區(qū)別:

- python2.x :raw_input() ;input()

- python3.x: input()

- python2.x(raw_input) python3.x(input) :無論你輸入的是什么類型的值,輸出的都是字符串類型(這里我們主要用Python3.x)

# 如果想通過打印完成多個變量的輸出 格式:
# print(變量名1,變量名2,變量名3...)
print(my_name,my_age)

# 姓名: 小明 年齡: 22歲
print("姓名:% 年齡:%s歲" %(my_name,my_age))

- python2.x(input):你輸入的是什么類型的值,輸出的就是什么類型的

7束倍、運算符

? ? - 算術運算符:

| 運算符 | 描述 | 實例 |
| ---- | ---- | ---------------------------------------------------------------------------------------------?|
| +? ? | 加? ? | 兩個對象相加 a + b 輸出結果 30?-------------------------------------------------|
| -? ? | 減? ? | 得到負數(shù)或是一個數(shù)減去另一個數(shù) a - b 輸出結果 -10-----------------------|
| *? ? | 乘? ? | 兩個數(shù)相乘或是返回一個被重復若干次的字符串 a * b 輸出結果 200--- |
| /? ? | 除? ? | b / a 輸出結果 2-----------------------------------------------------------------------?|
| //? | 取整除? | 返回商的整數(shù)部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0-------------?|
| %? ? | 取余? | 返回除法的余數(shù) b % a被丧,b=20,a=10肌幽, 輸出結果 0----------------------|
| **? | 指數(shù)? | a**b 為10的20次方晚碾, 輸出結果 100000000000000000000?--------------|

注意:混合運算時,優(yōu)先級順序為: `**` 高于 `*` `/` `%` `//` 高于 `+` `-` 喂急,為了避免歧義格嘁,建議使用 `()` 來處理運算符優(yōu)先級。

并且廊移,不同類型的數(shù)字在進行混合運算時糕簿,整數(shù)將會轉換成浮點數(shù)進行運算探入。

? ? - 賦值運算符:

-- 賦值運算符:
| 運算符 | 描述 | 實例 |
| ---- | ----- | ----------------------------------------------------------------------------------------------------------|
| =| 賦值運算符 | 把 = 號右邊的結果 賦給 左邊的變量,如 num=1 + 2 * 3懂诗,結果num的值為7|? ??? ?

-- 復合賦值運算符:可以少創(chuàng)建變量蜂嗽,少占用內存
| 運算符 | 描述 | 實例 |
| ------ | ---------------- | --------------------------------------|
| +=? ? | 加法賦值運算符? | c += a 等效于 c = c + a--|
| -=? ? | 減法賦值運算符? | c -= a 等效于 c = c - a-----|
| *=? ? | 乘法賦值運算符? | c *= a 等效于 c = c * a-----|
| /=? ? | 除法賦值運算符? | c /= a 等效于 c = c / a------|
| %=? ? | 取模賦值運算符? | c %= a 等效于 c = c % a-|
| **=? ? | 冪賦值運算符? ? | c **= a 等效于 c = c **a----|
| //=? ? | 取整除賦值運算符 | c //= a 等效于 c = c // a--|

8、數(shù)據(jù)類型轉換:

| 函數(shù) | 說明 |
| ---------------------- | ----------------------------- |
| int(x [,base ]) | 將x轉換為一個整數(shù) |
| float(x ) | 將x轉換為一個浮點數(shù) |
| complex(real [,imag ]) | 創(chuàng)建一個復數(shù)殃恒,real為實部植旧,imag為虛部 |
| str(x ) | 將對象 x 轉換為字符串 |
| repr(x ) | 將對象 x 轉換為表達式字符串 |
| eval(str ) | 用來計算在字符串中的有效Python表達式,并返回一個對象 |
| tuple(s ) | 將序列 s 轉換為一個元組 |
| list(s ) | 將序列 s 轉換為一個列表 |
| chr(x ) | 將一個整數(shù)轉換為一個Unicode字符 |
| ord(x ) | 將一個字符轉換為它的ASCII整數(shù)值 |
| hex(x ) | 將一個整數(shù)轉換為一個十六進制字符串 |
| oct(x ) | 將一個整數(shù)轉換為一個八進制字符串 |
| bin(x ) | 將一個整數(shù)轉換為一個二進制字符串 |

# 了解
# eval會自動幫我們識別去掉""以后的內容是否是python里面常見的類型,
# 如果是离唐,轉換成對應的類型病附,常用來轉換int和float
my_str3 = "2323"
ret = eval(my_str3)
print(type(ret))
print(ret)
?# eval往往會配合input使用
result = eval(input("請輸入一個數(shù)字:"))
print(type(result))
print(result)

# bool不參與轉換

三、順序結構

指的是代碼按照從上往下的流程,依次順序執(zhí)行.

四亥鬓、分支結構(選擇結構)

1、if判斷語句

格式:
if 要判斷的條件:
????條件成立時嵌戈,要做的事情
????...

# 例子:定義一個變量flag 如果flag為True,代表沒有危險品,可以進入
flag = True
# 判斷
if flag:
? ? print("您沒有攜帶危險品,可以進入火車站!!!")

- 如果某些條件滿足,才能做某件事情;條件不滿足時昔逗,則不能做鉴扫,這就是所謂的判斷。

- 不僅生活中有宋渔,在軟件開發(fā)中"判斷"功能也經(jīng)常會用到

- 能夠看得出if判斷語句的作用:就是當滿足一定條件時才會執(zhí)行代碼塊語句费什,否則就不執(zhí)行代碼塊語句

- 代碼的縮進為一個tab鍵,或者4個空格

2巡球、比較(即關系)運算符

?python中的比較運算符如下表
?| 運算符 | 描述 | 示例 |
| ---- | -------------------------------- | ------------------------- |
| == | 檢查兩個操作數(shù)的值是否相等言沐,如果是則條件變?yōu)檎妗? | 如a=3,b=3,則(a == b) 為 True |
| != | 檢查兩個操作數(shù)的值是否相等酣栈,如果值不相等险胰,則條件變?yōu)檎妗? | 如a=1,b=3,則(a != b) 為 True |
| > | 檢查左操作數(shù)的值是否大于右操作數(shù)的值矿筝,如果是起便,則條件成立。 | 如a=7,b=3,則(a > b) 為 True |
| < | 檢查左操作數(shù)的值是否小于右操作數(shù)的值缨睡,如果是鸟悴,則條件成立。 | 如a=7,b=3奖年,則(a < b) 為 False |
| >= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值细诸,如果是,則條件成立陋守。 | 如a=3,b=3震贵,則(a >= b) 為 True |
| <= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是水评,則條件成立猩系。 | 如a=3,b=3,則(a <= b) 為 True |

3中燥、邏輯運算符

| 運算符 | 邏輯表達式 | 描述 | 實例 |
| ---- | ------- | ---------------------------------------- | ------------------------------------ |
| and | x and y | 布爾"與":如果 x 為 False寇甸,x and y 返回 False,否則它返回 y 的值疗涉。 | True and False拿霉, 返回 False。 |
| or | x or y | 布爾"或":如果 x 是 True咱扣,它返回 True绽淘,否則它返回 y 的值。 | False or True闹伪, 返回 True沪铭。 |
| not | not x | 布爾"非":如果 x 為 True,返回 False 偏瓤。如果 x 為 False杀怠,它返回 True。 | not True 返回 False, not False 返回 True |

#例子:
is_man = False
if not is_man:
????print("是女性")

4厅克、if-else

# 書寫格式
if 條件:
????滿足條件時要做的事情1
????滿足條件時要做的事情2
????滿足條件時要做的事情3
? ? ...(省略)...
else:
????不滿足條件時要做的事情1????
????不滿足條件時要做的事情2
????不滿足條件時要做的事情3
????...(省略)...

is_man = not True
if is_man:
? ? print("是女的")
else:
? ? print("是男的")

5驮肉、elif

if xxx1:
????事情1
elif xxx2:
????事情2
elif xxx3:
????事情3
else:
? ? 事情4

說明:
- 當xxx1滿足時,執(zhí)行事情1已骇,然后整個if結束
- 當xxx1不滿足時离钝,那么判斷xxx2,如果xxx2滿足褪储,則執(zhí)行事情2卵渴,然后整個if結束
- 當xxx1不滿足時,xxx2也不滿足鲤竹,如果xxx3滿足浪读,則執(zhí)行事情3昔榴,然后整個if結束
- 可以與else一起使用
- elif必須和if一起使用,否則出錯
- else 一般用在最后碘橘,即所有條件都不滿足時使用
- elif是else if的縮寫,但是python里面不支持else if的寫法, 故 只能用elif.
- if 語句 和 elif 語句 以及 else語句都是互斥的,只有一種情況能夠執(zhí)行,不可能同時執(zhí)行多個
- 整體句式就是 要么...... 要么........ 要么...... 要么..... .........

6互订、if嵌套

if 條件1:
????滿足條件1 做的事情1
????滿足條件1 做的事情2
????...
????if 條件2:
????????滿足條件2 做的事情1
????????滿足條件2 做的事情2
????????...

說明
?- 外層的if判斷,也可以是if-else
- 內層的if判斷痘拆,也可以是if-else
- 根據(jù)實際開發(fā)的情況仰禽,進行選擇

例子:
chePiao = 1 # 用1代表有車票,0代表沒有車票
daoLength = 9 # 刀子的長度纺蛆,單位為cm
if chePiao == 1:
????print("有車票吐葵,可以進站")
????if daoLength < 10:
????????print("通過安檢")
????????print("終于可以見到Ta了,美滋滋~~~")
????else:
????????print("沒有通過安檢")
????????print("刀子的長度超過規(guī)定桥氏,等待警察處理...")
else:
????print("沒有車票温峭,不能進站")
????print("親愛的,那就下次見了")

用if語句寫猜拳游戲:
# 導入模塊 ---> 隨機模塊
import random

# 定義一個變量 記錄用戶(玩家)的輸入(拳法):
player = int(input("請輸入:剪刀(0) 石頭(1) 布(2):"))

# 定義一個變量 記錄電腦的輸入
computer = random.randint(0,2)? #0,1,2

?# 以玩家為第一視角:
# 假如說玩家勝利(剪刀 = 布 或者 石頭 = 剪刀 或者 布 = 石頭)
# 假如說玩家和電腦平局(玩家輸入的 == 電腦輸入的)
# 假如說玩家失敗(除了勝利和平局 其他都是失敗)

?# 玩家勝利
if (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):
????print("玩家勝利")
elif (player == computer):
????print("玩家和電腦達成平局")
else:
????print("玩家失敗")

五字支、循環(huán)結構

1凤藏、while循環(huán)

i = 0
while i < 5:
????print("當前是第%d次執(zhí)行循環(huán)" % (i + 1))
????print("i=%d" % i)
????i+=1

# 寫while循環(huán)的時候一定要注意:
# 定義一個變量, 切記要對變量進行加1 或者 減1 (等等)操作
# 否則會形成死循環(huán)

* while和if的用法基本類似,區(qū)別在于: ?

if 條件成立堕伪,則執(zhí)行一次清笨; ? while 條件成立,則重復執(zhí)行刃跛,直到條件不成立為止。?

* 一般情況下苛萎,需要**多次重復**執(zhí)行的代碼桨昙,都可以用循環(huán)的方式來完成?

* 循環(huán)不是必須要使用的,但是為了提高代碼的重復使用率腌歉,所以有經(jīng)驗的開發(fā)者都會采用循環(huán)?

* 不可以停止的循環(huán)(判斷條件一直滿足) 稱之為死循環(huán), 在開發(fā)中我們應該盡量防止死循環(huán),因為死循環(huán)太浪費設備性能.?

?* while循環(huán)內部的代碼需要進行縮進,python對縮進要求非常嚴格.

2蛙酪、while循環(huán)嵌套:實際寫代碼時,不要嵌套超過3次

* while循環(huán)嵌套: 外面的循環(huán)執(zhí)行一次,內部循環(huán)會執(zhí)行n次,一直到執(zhí)行完畢,再執(zhí)行外部的循環(huán).

* 無論是內部的while循環(huán)還是外部的while循壞都需要定義一個變量,? 作為循環(huán)次數(shù)的記錄

* 內部while和外部while都需要對變量進行累加操作.? 以保證循環(huán)次數(shù)的減少

例子1:打忧谈恰:
*
* *
* * *
* * * *
* * * * *

# 定義一個變量 記錄行數(shù)
row = 1
while row <= 5:

# 定義一個變量 記錄列數(shù)
????col = 1
????while col <= row:
????????print("*", end="")
????????col += 1

# 在默認的情況下 使用print 默認打印完成后 會有一個換行
# print("哈哈") 完整的格式 print("哈哈", end="\n")
#?換行
????print("")
????row += 1


例子2:打庸鹑:
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*

row = 1
while row <= 9:
????if row <= 5:
????????col = 1
????????while col <= row:
????????????print("*", end="")
????????????col += 1
????????print("")
????else:
????????col = 9
????????while col >= row:
????????????print("*", end="")
????????????col -= 1
????????print("")
????row += 1


例子3:九九乘法表
# 定義一個變量 記錄行數(shù)
# %2d 顯示兩位 如果只有一位 使用空格站位 默認為右對齊
# 如果左對齊 就是 %-2d
x = 1
while x <= 9:
????y = 1
????while y <= x:
????????print("%d * %d =%2d\t" %(y,x,y*x),end="")
????????y += 1
????# 換行
????print()
? ? x += 1

3、for循環(huán)

在Python中 for循環(huán)可以遍歷任何序列的項目馍驯,如一個列表或者一個字符串等阁危。

```
for 臨時變量 in 列表或者字符串等可迭代對象:
????????循環(huán)滿足條件時執(zhí)行的代碼
```

例子:
name = 'itheima'
for x in name:
?????print(x)

for循環(huán)后面可以跟隨一個else.構成for......else句式: (也可以不要else,具體看需求)
```
for 臨時變量 in 列表或者字符串等可迭代對象:
????????將會執(zhí)行的語句
else:
????????for循環(huán)執(zhí)行完畢之后,會執(zhí)行調用的語句
```

總結:

* for循環(huán)中的"臨時變量" 的作用范圍僅僅是當前for循環(huán)體中縮進的區(qū)域?

* for循環(huán)判斷的條件依然是 for 后面的條件是否為True,為True則可以進入,否則不允許進入循環(huán)體.?

* for循環(huán)中的in是個關鍵字 寫for循環(huán)的時候不能夠去掉in

補充知識:

python中 range() 函數(shù)用法:

函數(shù)語法: range(start, stop[, step])

參數(shù)說明:

- start: 計數(shù)從 start 開始。默認是從 0 開始汰瘫。例如range(5)等價于range(0狂打, 5);

- stop: 計數(shù)到 stop 結束,但不包括 stop混弥。例如:range(0趴乡, 5) 是[0, 1, 2, 3, 4]沒有5

- step:步長,默認為1。例如:range(0晾捏, 5) 等價于 range(0, 5, 1)

4蒿涎、break 和 continue

1) break

break能夠打破循環(huán)(這里的循環(huán)指的是一切循環(huán)(例如: for循環(huán)和while循環(huán))),break的作用:立刻結束break所在的整個循環(huán)

for循環(huán)中調用break:如果執(zhí)行了break for循環(huán)將終止 break后面的也就不再執(zhí)行 (直接跳出循環(huán))
name = 'itheima'
for x in name:
? ??print('----')
? ??if x == 'e':
? ??????break
? ??print(x)
else:
? ??print("==for循環(huán)過程中,如果沒有執(zhí)行break退出惦辛,則執(zhí)行本語句==")

運行結果:?
----
i
----
t
----
h
----

while循環(huán)中調用break:如果執(zhí)行了break while循環(huán)將終止 break后面的也就不再執(zhí)行 (直接跳出循環(huán))
i = 0
while i<5:
????i = i+1
????print('----')
????if i==3:
????????break
????print(i)
else:
????print("==while循環(huán)過程中劳秋,如果沒有執(zhí)行break退出,則執(zhí)行本語句==")

運行結果:
----
1
----
2
----

2) continue

continue的作用:用來結束**本次**循環(huán)裙品,緊接著執(zhí)行下一次的循環(huán)

for循環(huán)中使用continue:如果在for中 如果執(zhí)行了continue 將提前結束本次循環(huán) continue后面的代碼將不再執(zhí)行
name = 'itheima'
for x in name:
????print('----')
????if x == 'e':
????????continue
????print(x)
else:
????print("==for循環(huán)過程中俗批,如果沒有break則執(zhí)行==")

運行結果:
----
i
----
t
----
h
----
----
i
----
m
----
a
==for循環(huán)過程中,如果沒有break則執(zhí)行==

while循環(huán)中使用continue :如果執(zhí)行了continue 將提前結束本次循環(huán) continue后面的代碼將不再執(zhí)行
i = 0
while i<5:
????i = i+1
????print('----')
????if i==3:
????????continue
????print(i)

運行結果:
----
1
----
2
----
----
4
----
5

總結:

- break/continue只能用在循環(huán)中市怎,除此以外不能單獨使用

- break/continue在嵌套循環(huán)中岁忘,只對最近的一層循環(huán)起作用

- continue是結束單次循環(huán),break是結束整個循環(huán),注意對比記憶

六、字符串

1区匠、字符串的介紹

—? 什么是字符串:它是編程語言中表示文本的數(shù)據(jù)類型干像。字符串就是 有序的字符序列.(順序是不可以改變的)

— python中字符串的定義方式:

Python中字符串的定義:

*? 雙引號定義形式? ? ? ? ? ? ? ? ? 例如:? a? =? "hello? python"

*? 單引號定義形式? ? ? ? ? ? ? ? ? ? 例如:? b? =? '你好中國,? 你好Python'

兩者定義出來的字符串是完全相同的.? 使用哪種形式都可以

— 字符串輸出:在程序中我們可以通過print()方法輸出字符串

—? 字符串輸入:之前在學習input的時候,通過它能夠完成從鍵盤獲取數(shù)據(jù)驰弄,然后保存到指定的變量中麻汰;注意:input獲取的數(shù)據(jù),都以字符串的方式進行保存戚篙,即使輸入的是數(shù)字五鲫,那么也是以字符串方式保存

# 定義一個空的字符串 '' 或者 "" 或者 str()
# 空字符串 代表的就是 字符串中沒有一個字符,空字符串長度為0
# python中提供了一個len函數(shù)(內置函數(shù)) 計算字符串中的字符個數(shù)
# 保留其文本格式 可以使用三引號(" 或者 ')
my_str ='''哈嘍你好你好你好你好你好你好
你好世界世界世界世界
世界世界世界世界世界
哈嘍你好你好你好你好你好你好
你好世界世界世界世界
世界世界世界世界世界'''
print(len(my_str))

總結:

* 字符串就是一組字符的有序集合.

* 字符串有三種表現(xiàn)形式:? 用 ' ' 或者 " "? 包裹? ,? 也可以用多行注釋的形式表示? 變量名 =? '''字符串內容'''? 或者? 變量名 =? """字符串內容"""

* 想要查看字符串的類型, 我們可以調用方法? type(字符串變量名)?

* 想要獲取字符串的長度,? 我們可以使用 len(字符串變量名) 來查看

* 字符串可以是我們平時說的話語,也可以是某一類描述, 任何內內容都可以充當字符串內容.

2岔擂、字符串的下標和切片

1)下標:所謂`“下標”`位喂,就是編號.

如果想取出部分字符,那么可以通過`下標`的方法乱灵,(注意python中下標從 0 開始)?

一定要保證字符串的下標索引是存在的

**小結:**

* 無論是字符串中還是別的(我們即將會講到的列表和元組),? 下標索引值都是從0開始的

* 下標索引值類似于當前位置的坐標.? 或者是編號

* 以字符串舉例:? 這里所標識的是**字符串**中每個**字符**的位置編號

* 下標索引值可以從左側算起? 也可以從右側算起:

? ????* 從左側算起:? 0,? 1,? 2,? 3,? 4.......

????? * 從右側算起:? -1,? -2,? -3,? -4.......

2) 切片

切片是指截取某一對象其中一部分的操作塑崖。? (**字符串、列表痛倚、元組**都支持切片操作规婆。)

切片的語法:[起始:結束:步長]

* 切片是半開半閉區(qū)間? ? 即:? 包含起始位置, 但是不包含結束位置? 數(shù)學表示:? [起始: 結束)

# 切片的語法:[起始:結束(開區(qū)間):步長],步長不寫默認是1
# 字符串是不可變的(復制版的)
a = "abcdef"

# 'abc' -> a[0:3] 或者 a[:3] 或者a[-6:-3]
# 如果是從頭部開始 0可以省略
ret1 = a[:3]
print(ret1)

# 驗證字符串是不可變的
print(a)

# 'ace' a[:5:2] 或者 a[0:5:2] 或者 a[::2]
#默認步長是1
ret2 = a[::2]
print(ret2)

# 'bd'
ret3 = a[1:4:2]
print(ret3)

?# 'fdb' 或者a[-1::-2]
ret4 = a[::-2]
print(ret4)

# 'fd' 或者a[:-5:-2]
ret5 = a[-1:-4:-2]
print(ret5)

總結:

* 我們可以從字符串中獲取相對應的字符,使用切片的方式,也可以使用下標索引的方式.

* 使用切片的方式獲取比較方便,可以根據(jù)公司的需求來進行

* 字符串無論怎樣切片,修改的都不是原來的字符串,而是復制出來的新字符串

* 字符串切片需要遵循的格式:? 字符串名稱 [ 起始 : 結束 : 步長 ]? 其中結束的索引值不包含

* 字符串切片可以從左側也可以從右側進行.? 相對應的索引值不同:

? ????* 從左側進行:? 索引值為:0,? 1,? 2,? 3,? 4.....

? ????* 從右側進行:? 索引值為:-1, -2, -3, -4.....

* 從右側進行切片的時候,需要注意步長也為**負數(shù)**,否則仍然是從左側進行.

3蝉稳、字符串的常見操作:

1) find

> Python find() 方法檢測字符串中是否包含子字符串 str 抒蚜,如果指定 beg(開始) 和 end(結束) 范圍,則檢查是否包含在指定范圍內耘戚,如果包含子字符串返回開始的索引值削锰,否則返回-1。

find()方法語法:str.find(str, beg=0, end=len(string))

> sub:? ? 要查找的**小字符串**

> start:? beg -- 開始索引毕莱,默認為0器贩。

> end:? ? end -- 結束索引颅夺,默認為字符串的長度。(左開右閉)

例如:

mystr = "hello world itcast and itcastcpp"

mystr.find("itcast")


結果:

12

2) index

> Python index() 方法檢測字符串中是否包含子字符串 str 蛹稍,如果指定 beg(開始) 和 end(結束) 范圍吧黄,則檢查是否包含在指定范圍內,該方法與 python find()方法一樣唆姐,只不過如果str不在 string中會報一個異常拗慨。

index()方法語法:str.index(str, beg=0, end=len(string))

> str :? ? 指定檢索的字符串

> beg:? 開始索引,默認為0奉芦。

> end:? 結束索引赵抢,默認為字符串的長度。(左開右閉)

例如:

mystr = 'hello world itcast and itcastcpp'

mystr.find('itcast', 0, 10)

mystr.index('itcast', 0, 10)


結果:

-1

Traceback (most recent call last):

File "<stdin>", line 4, in <module>

ValueError: substring not found

3) count

> Python count() 方法用于統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)声功》橙矗可選參數(shù)為在字符串搜索的開始與結束位置

count()方法語法:str.count(sub, start= 0,end=len(string))

> sub:? 搜索的子字符串

> start:? 字符串開始搜索的位置。默認為第一個字符,第一個字符索引值為0先巴。

> end:? 字符串中結束搜索的位置其爵。字符中第一個字符的索引為 0。默認為字符串的最后一個位置伸蚯。

例如:

mystr = 'hello world itcast and itcastcpp'

mystr.count("itcast")


結果:

2

4) replace

> Python replace() 方法把字符串中的 old(舊字符串) 替換成 new(新字符串)摩渺,如果指定第三個參數(shù)max,則替換不超過 max 次剂邮。

replace()方法語法:str.replace(old, new[, max])

> old --? 將被替換的子字符串摇幻。

> new -- 新字符串,用于替換old子字符串挥萌。

> max -- 可選字符串, 替換不超過 max 次

name = 'hello world ha ha'

name.replace("ha", "Ha")

name.replace("ha", "Ha", 1)


結果:

'hello world Ha Ha'

'hello world Ha ha'

5) split

> Python split()通過指定分隔符對字符串進行切片绰姻,如果參數(shù)num 有指定值,則僅分隔 num 個子字符串

split()方法語法:str.split(str="", num=string.count(str)).

> str --? ? 分隔符瑞眼,默認為所有的空字符,包括空格棵逊、換行(\n)伤疙、制表符(\t)等。

> num -- 分割次數(shù)辆影。

name = 'hello world ha ha'

name.split(" ")

name.split(" ", 2)
name.split("l")

結果:

['hello', 'world', 'ha', 'ha']
['hello', 'world', 'ha ha']
['he','','0 wor','d ha ha'] —— ''這里面有這個空字符串

6) capitalize

> Python capitalize()將字符串的第一個字母變成大寫,其他字母變小寫徒像。對于 8 位字節(jié)編碼需要根據(jù)本地環(huán)境。

capitalize()方法語法:str.capitalize()

例如:

mystr = 'hello world itcast And Itcastcpp'

print(mystr.capitalize())


結果:

'Hello world itcast and itcastcpp'

7) title

> Python title() 方法返回"標題化"的字符串,就是說所有單詞都是以大寫開始蛙讥,其余字母均為小寫(見 istitle())锯蛀。

title()方法語法:str.title();

例如:

a = "hello itcast and itcastCPP"

a.title()


結果:

'Hello Itcast And Itcastcpp'

8) startswith

> Python startswith() 方法用于檢查字符串是否是以指定子字符串開頭,如果是則返回 True次慢,否則返回 False旁涤。如果參數(shù) beg 和 end 指定值翔曲,則在指定范圍內檢查。

startswith()方法語法:str.startswith(str, beg=0,end=len(string));

> str -- 檢測的字符串劈愚。

> strbeg -- 可選參數(shù)用于設置字符串檢測的起始位置瞳遍。

> strend -- 可選參數(shù)用于設置字符串檢測的結束位置。

例如:

mystr = 'hello world itcast and itcastcpp'

mystr.startswith("hello")

mystr.startswith("Hello")


結果:

True

False

9) endswith

> Python endswith() 方法用于判斷字符串是否以指定后綴結尾菌羽,如果以指定后綴結尾返回True掠械,否則返回False∽⒆妫可選參數(shù)"start"與"end"為檢索字符串的開始與結束位置猾蒂。

endswith()方法語法:str.endswith(suffix[, start[, end]])

> suffix -- 該參數(shù)可以是一個字符串或者是一個元素。

> start -- 字符串中的開始位置是晨。

> end -- 字符中結束位置肚菠。

例如:

mystr = 'hello world itcast and itcastcpp'

mystr.endswith('cpp')

mystr.endswith('app')


結果:

True

False

10) lower

> Python lower() 方法轉換字符串中所有大寫字符為小寫。

lower()方法語法:str.lower()

例如:

mystr = 'HELLO World itcast and itcastcpp'

mystr.lower()


結果:

'hello world itcast and itcastcpp'

11) upper

> Python upper() 方法將字符串中的小寫字母轉為大寫字母署鸡。

upper()方法語法:str.upper()

例如:

mystr = 'HELLO World itcast and itcastcpp'

mystr.upper()


結果:

'HELLO WORLD ITCAST AND ITCASTCPP'

12) ljust

> Python ljust() 方法返回一個原字符串左對齊,并使用空格填充至指定長度的新字符串案糙。如果指定的長度小于原字符串的長度則返回原字符串。

ljust()方法語法:str.ljust(width[, fillchar])

> width -- 指定字符串長度靴庆。

> fillchar -- 填充字符时捌,默認為空格。

例如:

mystr = 'hello'

ret = mystr.ljust(10,'*')

print(ret)


結果:

'hello*****'

13)? rjust

> Python rjust() 返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串炉抒。如果指定的長度小于字符串的長度則返回原字符串奢讨。

rjust()方法語法:str.rjust(width[, fillchar])

> * width -- 指定填充指定字符后中字符串的總長度.

> - fillchar -- 填充的字符,默認為空格

例如:

mystr = "hello"

ret = mystr.rjust(10, '*')

print(ret)


結果:

*****hello

14)? center

> Python center() 返回一個原字符串居中,并使用空格填充至長度 width 的新字符串焰薄。默認填充字符為空格拿诸。

center()方法語法:str.center(width[, fillchar])

> - width -- 字符串的總寬度。

> - fillchar -- 填充字符塞茅。

例如:

mystr = 'hello world itcast and itcastcpp'

ret = mystr.center(50,'@')

print(ret)


結果:

@@@@@@@@@hello world itcast and itcastcpp@@@@@@@@@

15) lstrip

> Python lstrip() 方法用于截掉字符串左邊的空格或指定字符亩码。

lstrip()方法語法:str.lstrip([chars])

> - chars --指定截取的字符。

例如:

str = "? ? this is string example....wow!!!? ? ";

print str.lstrip(); #如果是lstrip(' t')或者lstrip('t ')都可以刪除前面的空格和t野瘦,
#但是如果是lstrip('t')描沟,則不能刪除前面的空格和t,因為原字符串不是t開頭

str = "88888888this is string example....wow!!!8888888";

print str.lstrip('8');


結果:

this is string example....wow!!!

this is string example....wow!!!8888888

16)? rstrip

> Python rstrip() 刪除 string 字符串末尾的指定字符(默認為空格).

rstrip()方法語法:str.rstrip([chars])

> - chars -- 指定刪除的字符(默認為空格)

例如:

mystr = '? ? hello? ? '

ret = mystr.rstrip()

print(ret)


結果:

'? ? hello'

17)? strip

> Python strip() 方法用于移除字符串頭尾指定的字符(默認為空格)鞭光。

strip()方法語法:str.strip([chars]);

> - chars -- 移除字符串頭尾指定的字符吏廉。

例如:

a = '\n\t itcast \t\n'

ret = a.strip()

print(ret)


結果:

'itcast'

18) rfind

> Python rfind() 返回字符串最后一次出現(xiàn)的位置(從右向左查詢),如果沒有匹配項則返回-1惰许。

rfind()方法語法:str.rfind(str, beg=0 end=len(string))

> - str -- 查找的字符串

> - beg -- 開始查找的位置席覆,默認為 0

> - end -- 結束查找位置,默認為字符串的長度汹买。

例如:

mystr = 'hello world itcast and itcastcpp' #查詢時從右往左查佩伤,但位置是按左往右算的

ret = mystr.rfind("itcast")

print(ret)


結果:

23

19)? rindex

> Python rindex() 返回子字符串 str 在字符串中最后出現(xiàn)的位置聊倔,如果沒有匹配的字符串會報異常,你可以指定可選參數(shù)[beg:end]設置查找的區(qū)間畦戒。

rindex()方法語法:str.rindex(str, beg=0 end=len(string))

> - str -- 查找的字符串

> - beg -- 開始查找的位置方库,默認為0

> - end -- 結束查找位置,默認為字符串的長度障斋。

例如:

mystr = 'hello world itcast and itcastcpp'

ret1 = mystr.rindex('it')

print(ret1)

ret2 = mystr.rindex("IT")

print(ret2)


結果:

23

Traceback (most recent call last):

File "<stdin>", line 4, in <module>

ValueError: substring not found

20)? partition

> partition() 方法用來根據(jù)指定的分隔符將字符串進行分割纵潦。

> 如果字符串包含指定的分隔符,則返回一個3元的元組垃环,第一個為分隔符左邊的子串邀层,第二個為分隔符本身,第三個為分隔符右邊的子串遂庄。

> partition() 方法是在2.5版中新增的寥院。

partition()方法語法:str.partition(str)

> str : 指定的分隔符。

例如:

mystr = 'hello world itcast and itcastcpp'

ret = mystr.partition('itcast')

print(ret)


結果:

('hello world', 'itcast', ' and itcastcpp')

21)? rpartition

> 類似于 partition()函數(shù),不過是從右邊開始.

rpartition()方法語法:str.partition(str)

> str : 指定的分隔符涛目。

例如:

mystr = 'hello world itcast and itcastcpp'

ret1 = mystr.partition('itcast')

print(ret1)

ret2 = mystr.rpartition('itcast')

print(ret2)


結果:

('hello world', 'itcast', ' and itcastcpp')

('hello world itcast and ', 'itcast', 'cpp')

22)? splitlines

> Python splitlines() 按照行('\r', '\r\n', \n')分隔秸谢,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False霹肝,不包含換行符估蹄,如果為 True,則保留換行符。

splitlines()方法語法:str.splitlines([keepends])

> - keepends -- 在輸出結果里是否去掉換行符('\r', '\r\n', \n'),默認為 False瞧捌,不包含換行符,如果為 True垮兑,則保留換行符。

例如:

mystr = 'hello\nworld'

print(mystr)

ret = mystr.splitlines()

print(ret)


結果:

hello

world

['hello', 'world']

23)? isalpha

> Python isalpha() 方法檢測字符串是否只由字母組成漱挎。

isalpha()方法語法:str.isalpha()

例如:

mystr = 'abc'

ret1 = mystr.isalpha()

print(ret1)


mystr1 = '123'

ret2 = mystr.isalpha()

print(ret2)


mystr2 = 'abc 123'

ret3 = mystr2.isalpha()

print(ret3)


結果:

True

False

False

24)? ? isdigit

> Python isdigit() 方法檢測字符串是否只由數(shù)字組成系枪。

isdigit()方法語法:str.isdigit()

例如:

mystr1 = 'abc'

ret1 = mystr1.isdigit()

print(ret1)


mystr2 = '123'

ret2 = mystr2.isdigit()

print(ret2)


mystr3 = 'abc123'

ret3 = mystr3.isdigit()

print(ret3)


結果:

False

True

False

25)? isalnum

> Python isalnum() 方法檢測字符串是否由字母和數(shù)字組成。

isalnum()方法語法:str.isalnum()

例如:

mystr1 = '123'

ret1 = mystr.isalnum()

print(ret1)


mystr2 = 'abc'

ret2 = mystr2.isalnum()

print(ret2)


mystr3 = 'abc123'

ret3 = mystr3.isalnum()

print(ret3)


mystr4 = 'abc 123'

ret4 = mystr4.isalnum()

print(ret4)


結果:

True

True

True

False

26)? isspace

> Python isspace() 方法檢測字符串是否只由空格組成磕谅。

isspace()方法語法:str.isspace()

例如:

mystr = 'abc123'

ret = mystr.isspace()

print(ret)


mystr1 = ''

ret1 = mystr1.isspace()

print(ret1)


mystr2 = '? '

ret2 = mystr2.isspace()

print(ret2)


mystr3 = '? ? '

ret3 = mystr3.isspace()

print(ret3)


結果:

False

False

True

True

27)? join

> Python join() 方法用于將序列中的元素以指定的字符連接生成一個新的字符串

join()方法語法:str.join(sequence) 是字符串.join()

> - sequence -- 要連接的元素序列私爷。

例如:

str = ' '

li = ['my', 'name', 'is', 'meiZong']

ret = str.join(li)

print(ret)

str1 = '_'

ret1 = str1.join(li)

print(ret1)


結果:

'my name is meiZong'

'my_name_is_meiZong'

補充知識:

# 內置函數(shù)help:對字符串不了解 不知道他有什么特點 有哪些方法,或者對他的方法不熟悉

????my_str = "hello"

????print(type(my_str))

# 查找

????help(str.lower)

# 如果查看一個類的所有方法怜庸,首先要確定他的類型 -> type(數(shù)值) <class "類型">当犯,help(類型)垢村,如果查看這個類型的指定的方法割疾,help(類型.方法名)

總結:

* 字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號('或")來創(chuàng)建字符串嘉栓。

* 創(chuàng)建字符串很簡單宏榕,只要為變量分配一個值即可拓诸。例如:var1 = 'Hello World!'

* Python不支持單字符類型,單字符在 Python 中也是作為一個字符串使用麻昼。

* Python訪問子字符串奠支,可以使用方括號來截取字符串

* 你可以對已存在的字符串進行修改,并賦值給另一個變量,? 字符串不支持修改.

* Python 支持格式化字符串的輸出 抚芦。盡管這樣可能會用到非常復雜的表達式倍谜,但最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。

* python三引號允許一個字符串跨多行叉抡,字符串中可以包含換行符尔崔、制表符以及其他特殊字符。

? 三引號的語法是一對連續(xù)的單引號或者雙引號(通常都是成對的用)褥民。

七季春、列表

1、列表的介紹:

列表: 和變量一樣,列表也是一個容器,該容器能夠存儲多種數(shù)據(jù)類型.

# 格式: 列表名 = [元素1, 元素2, 元素3,....]

my_list = ["xiaoming", "xiaohong"]

# # -> 支持下標索引

my_name = my_list[0]

print(my_name)

# 需求 我想打印hello (從左到右) 0, 1, 2,....

# 也可以從右到左 -1, -2, -3, ....

ret1 = my_list[-2]

print(ret1)

# 定義一個空列表

# my_list = []? 或者 list()

# my_list = list()

# # 打印下元素個數(shù)

l = len(my_list)

print(l)

# 可以定義空的列表 只要是列表那么就應該有[]

# 也支持下標索引獲取元素

# 保存數(shù)據(jù)的元素 可以是任意類型

總結:

* 列表就是一個容器, 它能夠容納各種數(shù)據(jù)類型, 表現(xiàn)形式是用 [] 包裹

* 列表中的元素可以重復,? 并且是有順序排列的, 我們可以通過下標索引的形式獲取.

? ????* 這里說的下標索引有從左向右的: 0, 1, 2, 3....

? ????* 和從右往左的: -1, -2, -3, -4.....

* 我們定義空列表可以通過 []? 或者是? list()的形式來定義.

* 獲取列表中元素長度

2. 列表的循環(huán)遍歷

> 了更有效率的輸出列表的每個數(shù)據(jù)消返,可以使用循環(huán)來完成

1)? 使用for循環(huán)

namesList = ['xiaoWang', 123, 2323.23,? True, False]

for name in namesList:

? ? print(name)

結果:

xiaoWang

123

2323.23

True

False


2) 使用while循環(huán)

namesList = ['xiaoWang', 123, 2323.23,? True, False]

length = len(namesList)

i = 0

while i<length:

? ? print(namesList[i])

? ? i+=1

結果:

xiaoWang

123

2323.23

True

False

3. 列表的相關操作

> 列表中存放的數(shù)據(jù)是可以進行修改的载弄,比如"增"、"刪"撵颊、"改""

1)? 添加元素:append, extend, insert宇攻,列表可變,字符串不可變

> append() 方法用于在列表末尾添加新的對象秦驯。

append()方法語法:list.append(obj)

>? extend() 函數(shù)用于在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)尺碰。

extend()方法語法:list.extend(seq)

>? insert() 函數(shù)用于將指定對象插入列表的指定位置。

insert()方法語法:list.insert(index, obj)

> - index -- 對象 obj 需要插入的索引位置译隘。

> - obj -- 要插入列表中的對象亲桥。

# append:只要是python中的對象,都可以插入

my_list = ['12','23',23, 34]

my_list.append(2323)

print(my_list)

my_list.append(True)

print(my_list)

my_list.append("2323")

print(my_list)

my_list.append("12")

print(my_list)

my_list.append(3.134)

print(my_list)

my_list.append([23,'2323'])

print(my_list)

# extend:添加一個可以遍歷的對象

my_list.extend([3,2,4,5,2])

print(my_list)

my_list.extend('hahhaha') # 列表中加入了h,a固耘,h题篷,h,a厅目,h番枚,a

print(my_list)

# my_list.extend(2323)? # extend添加的對象需要可以遍歷,這樣寫是錯誤的

# print(my_list)? ?

# my_list.extend(True)? # extend添加的對象需要可以遍歷,這樣寫是錯誤的

# print(my_list)

my_list.extend("2323")

print(my_list)

my_list.extend("12")

print(my_list)

# my_list.extend(3.134)? # extend添加的對象需要可以遍歷,這樣寫是錯誤的

# print(my_list)

my_list.extend([23,'2323'])

print(my_list)

# insert 插入到制定位置

my_list1 = []

my_list1.insert(0,'hello')

print(my_list1)

總結

* append和extend給列表添加元素都是從列表的尾部添加, insert是在指定位置添加.

* append 添加的元素不限制類型,? 任意對象都可以使用append加入列表

* extend加入列表的元素有限制:? 只有能夠遍歷的對象才可以, 并且添加到列表的元素是對象遍歷之后的每一小部分.

* 目前我們所學的能夠遍歷的對象只有:? 字符串和列表? (后期還會有元組 和 字典)

* 列表加入元素的方式可以根據(jù)需求隨意選擇

2) 修改元素

> 修改元素的時候,要通過下標來確定要修改的是哪個元素损敷,然后才能進行修改

# 定義一個列表

my_list = ['ab',23, 2.23]

# 獲取

value = my_list[1]

print(value)

# 把獲取的數(shù)據(jù)進行修改

my_list[1] = "22222"

print(my_list)

my_list[-1] = 223

print(my_list)

總結:

* 修改元素只需要遵循如下順序:? 先獲取, 后修改

* 在列表中獲取元素只需要根據(jù)下標索引值拿取.

* 修改時,? 那剛剛拿取的元素重新賦值即可.

* 列表是可變的, 所以里面的元素也是可以修改的.

3) 查找元素

>? 所謂的查找葫笼,就是看看指定的元素是否存在:in,not? in? 拗馒,index路星,count

> python中查找的常用方法為:

- in(存在),如果存在那么結果為true,否則為false

- not in(不存在)诱桂,如果不存在那么結果為true洋丐,否則false

> in的方法只要會用了呈昔,那么not in也是同樣的用法,只不過not in判斷的是不存在

# 查找元素(in, not in, index, count)

# 定義一個列表, 判斷老李是否在列表中

str = '老李'

my_list = ['老李', '老張', '小明', 300, 300]

if str in my_list:

? ? print('存在在列表中')

# 使用not in 判斷一個元素不再列表中

if "小紅" not in my_list:

? ? print("小紅不再列表中")

# index 通過index 獲取某個元素在列表中的下表索引

ret1 = my_list.index(300)

print(ret1)

# count查找某個元素的值在列表中出現(xiàn)的次數(shù)

ret2 = my_list.count(300)

print(ret2)

# 查詢4000 如果有給出下標索引值 如果沒有 什么也不做

# count配合index實現(xiàn):

count = my_list.count(300)

if count > 0:

? ? index = my_list.index(300)

? ? print(index)

# 使用in配合完成

if 300 in my_list:

? ? index = my_list.index(300)

? ? print(index)

總結:

* 查找元素一般使用 in? 或者 not? in? 或者 index? ? count結合

* in? 或者? not in? 我們搭配 if 語句來實現(xiàn)

* 如果單獨使用 index 有崩潰的風險(index沒有查找到元素的情況下,會崩潰)

* 要想使用index, 需要先判斷元素在列表中的count值, 只有元素的個數(shù)大于等于1個, 代表列表中有此元素, 才可以用index進行下標值的獲取, 這樣比較安全, 排除了崩潰的可能.

* 我們這里不可以使用find 或者 rfind ,? 因為 find 和 rfind 是字符串常用的方法,我們這里說的是列表.

4) 刪除元素

列表元素的常用刪除方法有:

- del:根據(jù)下標進行刪除, 也可以刪除掉整個列表對象,提前釋放內存

- pop:刪除最后一個元素,? 也可以刪除單個指定元素? 把刪除的元素返回回來

- remove:根據(jù)元素的值進行刪除? 如果要刪除的元素值不在列表,會崩潰

- clear: 清空這個列表? ? 把列表中的元素刪除干凈,但是列表還在

# 定義一個列表

my_list = ["小明", 20, "小紅", 32]

# del 刪除指定的元素(通過下標索引)

# 格式: del 列表名[下標索引]

# del 這個函數(shù) 是python內置函數(shù)

del my_list[1:2]

print(my_list)

# del 第二種用法 ----> 了解 del my_list[:] 是不會報錯的友绝,del my_list會報錯

# 提前殺死對象 提前釋放內存堤尾,print(my_list)會報錯,my_list整個不存在了

del my_list

-----------------------------------------------------------

# pop是屬于列表的方法

# pop 默認情況下 會從列表的后面開始刪除

# .pop() 會有一個返回值 告知刪除元素的值

print(my_list.pop())

print(my_list)

# pop(下標索引)

ret1 = my_list.pop(0)

print(ret1)

print(my_list)

-----------------------------------------------------------

# remove通過對象(數(shù)值)來刪除列表中的元素迁客,如果沒有這樣的元素郭宝,就會返回一個錯誤。
# 所以在remove之前掷漱,最好先count一下剩蟀,看remove的元素是否在list里面

my_list.remove('小紅')

print(my_list)

-------------------------------------------------------------

# clear 清空列表(列表中的所有元素全部刪除),移除列表中的所有項切威,等于del a[:]

my_list.clear()

print(my_list)

# clear() 等價于:? my_list = [] 或者 my_list = list()

4育特、列表的排序

sort:對列表中的元素進行排序。

sort()方法語法:list.sort([func])

> - func -- 可選參數(shù), 如果指定了該參數(shù)會使用該參數(shù)的方法進行排序先朦。

> - reverse:倒排列表中的元素缰冤。

# 排序, 默認是升序排列

my_list.sort()

# 降序排列

my_list.sort(reverse=True) 或者 my_list.reverse()

# python3.x中排序只支持數(shù)字類型

5、列表的嵌套

一個列表中的元素又是一個列表喳魏,那么這就是列表的嵌套棉浸。

# 需求: 一個學校 有三個辦公室 現(xiàn)在有8為老師等待工位的分配

import? random

# 定義一個學校

school = [[],[],[]]

# 定義一個變量保存8位老師,讓8位老師站好等待隨機分配辦公室

my_str = 'ABCDEFGH'

for c in my_str:

? ? # 產(chǎn)生隨機數(shù)

? ? index = random.randint(0,2)

? ? school[index].append(c)

print(school)

# 獲取元素和修改元素:

school[1][1] = 'F' # 這時候school中的元素已經(jīng)修改了

6刺彩、求列表的最大最小值(冒泡排序)

my_list = [-1,-2,-3,-63,-20,-203]

# 定義一個變量,記錄最大值

max = my_list[0]

for value in my_list:

? ? if value > max:

? ? ? ? max = value

print(max)

# 定義一個變量 記錄最小值

min = my_list[0]

for value in my_list:

? ? if value < min:

? ? ? ? min = value

print(min)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末迷郑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子创倔,更是在濱河造成了極大的恐慌嗡害,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦攘,死亡現(xiàn)場離奇詭異霸妹,居然都是意外死亡,警方通過查閱死者的電腦和手機知押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門叹螟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人台盯,你說我怎么就攤上這事罢绽。” “怎么了静盅?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵良价,是天一觀的道長。 經(jīng)常有香客問我,道長棚壁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任栈虚,我火速辦了婚禮袖外,結果婚禮上,老公的妹妹穿的比我還像新娘魂务。我一直安慰自己曼验,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布粘姜。 她就那樣靜靜地躺著鬓照,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孤紧。 梳的紋絲不亂的頭發(fā)上豺裆,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音号显,去河邊找鬼臭猜。 笑死,一個胖子當著我的面吹牛押蚤,可吹牛的內容都是我干的蔑歌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼揽碘,長吁一口氣:“原來是場噩夢啊……” “哼次屠!你這毒婦竟也來了?” 一聲冷哼從身側響起雳刺,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤劫灶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掖桦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浑此,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年滞详,在試婚紗的時候發(fā)現(xiàn)自己被綠了凛俱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡料饥,死狀恐怖蒲犬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情岸啡,我是刑警寧澤原叮,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響奋隶,放射性物質發(fā)生泄漏擂送。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一唯欣、第九天 我趴在偏房一處隱蔽的房頂上張望嘹吨。 院中可真熱鬧,春花似錦境氢、人聲如沸蟀拷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽问芬。三九已至,卻和暖如春寿桨,著一層夾襖步出監(jiān)牢的瞬間此衅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工亭螟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留炕柔,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓媒佣,卻偏偏與公主長得像匕累,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子默伍,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345