Python學(xué)習(xí)筆記-第2天: 開發(fā)環(huán)境和語法基礎(chǔ)(1)

第二天 開發(fā)環(huán)境和語法基礎(chǔ)(1)

今天主要計(jì)劃學(xué)習(xí)用VSCode搭建開發(fā)環(huán)境及Python語法基礎(chǔ)
學(xué)習(xí)涉及到的源碼地址:GitHub源碼

使用VSCode打造Python開發(fā)環(huán)境

可以用來開發(fā)Python的開發(fā)工具很多,我選擇了VSCode,原因很簡單,因?yàn)樗强缙脚_的,而且免費(fèi)的。

  • 下載安裝VS Code

    從VSCode官方網(wǎng)站下載自己喜歡的工作環(huán)境的版本進(jìn)行安裝,很簡單在這里就不多說了。

  • 安裝Python環(huán)境

    Python官網(wǎng)下載適合自己開發(fā)環(huán)境的Python3.x版本進(jìn)行安裝.

  • 配置VSCode開發(fā)Python

    在VSCode中搜索擴(kuò)展插件:Python,安裝后,重新加載。就可以愉快的擼代碼了。Python插件自帶的Pylint功能會(huì)在你輸入的過程中給你自動(dòng)提示,自動(dòng)完成,以及錯(cuò)誤提示。這里需要提醒各位,VSCode包括VS中,Tab都默認(rèn)是4個(gè)空格。

  • VSCode常用的幾個(gè)操作快捷鍵:

    首先是F1/Ctrl+Shit+P萬能鍵,誰用誰知道
    Ctrl+P:文件切換
    Ctrl+空格:自動(dòng)提示
    F12/Ctrl+左鍵:跳轉(zhuǎn)到定義
    Shift+F12:預(yù)覽定義
    Ctrl+G:跳轉(zhuǎn)行號
    Ctrl+/:注釋切換
    Alt+↑↓:整行上下移動(dòng)
    Ctrl+↑↓:編輯器垂直滾動(dòng)條上下移動(dòng),光標(biāo)不動(dòng)
    Ctrl+Backspace/Delete:整詞/連續(xù)空白刪除
    Ctrl+→←:光標(biāo)整詞移動(dòng)
    Ctrl+F查找/Ctrl+Shift+F在文件中查找,這都屬于通用的,類似的就不說了啊。
    
  • 調(diào)試配置

    隨時(shí)隨地,打開一個(gè)Pyhton源碼文件,按F5,選擇調(diào)試運(yùn)行當(dāng)前文件。項(xiàng)目中一般需要配置啟動(dòng)項(xiàng)目入口文件,傳統(tǒng)意義上它叫:main.py.注意,VSCode默認(rèn)在調(diào)試后,會(huì)停在第一句。

調(diào)試快捷鍵:

```
F5:調(diào)試/繼續(xù),
F10:單步跳過,
F11:單步進(jìn)入,
Shift+F11:跳出。
F9:切換斷點(diǎn)
```

接下來,開擼吧。

Python編程基礎(chǔ)

Python程序的基本格式

  • 記住Python使用縮進(jìn)控制代碼范圍的

    這點(diǎn)有點(diǎn)像coffee script,應(yīng)該是coffee學(xué)習(xí)python;區(qū)別于Java、C、C++等用{}控制代碼塊?!翱s進(jìn)”是Python語法強(qiáng)制的規(guī)定。縮進(jìn)時(shí),幾個(gè)空格都是允許的,但是數(shù)目必須統(tǒng)一且前后一致。通常采用“四個(gè)空格”表示一個(gè)縮進(jìn)。

  • 使用#進(jìn)行行注釋,用三個(gè)連續(xù)的'''進(jìn)行塊注釋

  • 變量名是區(qū)分大小寫的

  • 結(jié)尾不需要使用;進(jìn)行結(jié)束

  • 使用\行連接比較長的行內(nèi)容

  • 一段示例代碼:

    '''
    這里是一大塊注釋語句
    為什么要使用塊注釋,哪里使用,我就不多說了
    程序員都懂的
    '''
    a = "a"
    A = "c" # a 和 A 是兩個(gè)不同的變量
    #用\連接長字符串
    b = "I love google than \
        baidu,because of xxxxxx\
        nnnnnn\
        oooo"    
    if True: # 行注釋 "True"是Python的一個(gè)Bool值
    #下面的行相對于if用Tab控制了縮進(jìn)
        print("我是對的") #不需要使用;結(jié)束語句
        print("Hello")
    if False: #上一個(gè)代碼塊結(jié)束了,開始新的代碼
        print("我錯(cuò)了嗎")
        print("World")
    

Python程序的構(gòu)成

  • Python程序由模塊組成的,通常就是一個(gè)py源文件
  • 模塊由一系列的語句構(gòu)成
  • 語句用于創(chuàng)建對象、變量賦值、調(diào)用函數(shù)、控制語句等

***重點(diǎn)Python中的對象

在Python中一切都是對象。

對象由三部分組成:identity,type,value組成,它的本質(zhì)被解釋器放在內(nèi)存堆中。擁有特定的值,支持特定類型的相關(guān)操作。

比如定義一個(gè)變量:a = 1

1就是對象,它存在在內(nèi)存中如下:

id type value
4395429648 int 1

變量a其實(shí)是對象id的引用,存放在內(nèi)存棧中;如果在定義一個(gè)變量:b = 1,那么a和b指向的是同一個(gè)引用地址。

可以通過內(nèi)置方法:id(a) 或 id(1)獲取對象的id,type(a)獲取對象的類型。

***重點(diǎn): Python只會(huì)緩存[-5,無窮大]的整數(shù),所以,在這里,a和b的引用地址一樣。這里不注意的話,可能是個(gè)坑。內(nèi)置數(shù)據(jù)類型:數(shù)值型,字符串,列表,字典等都會(huì)有自己的對象緩存池,這樣做的好處是,避免了頻繁的申請內(nèi)存,釋放內(nèi)存,這樣會(huì)極大的降低應(yīng)用程序的運(yùn)行速度,還會(huì)造成大量的內(nèi)存碎片。因此提供對象緩存機(jī)制是非常重要的。

綜上,可以總結(jié)兩個(gè)點(diǎn):

  • python是動(dòng)態(tài)語言

    定義變量不需要指定類型,解釋器會(huì)根據(jù)其引用的對象自動(dòng)確定其類型

  • python也是強(qiáng)類型語言

    因?yàn)閷ο笫欠至祟愋偷?,不同的類型支持的操作是不一樣?/p>

Python的標(biāo)識符

  • 關(guān)于命名就不多說了,規(guī)則和大多數(shù)開發(fā)語言一致
  • 重點(diǎn)說一下,盡量不要用__開頭的標(biāo)識符進(jìn)行命名,因?yàn)殡p下劃線開頭和結(jié)尾的名稱通常有特殊含義,如init,在python中表示類的構(gòu)造函數(shù)

變量的定義和賦值

  • 變量名 = 表達(dá)式

    python從右往左進(jìn)行解釋,先計(jì)算右邊的表達(dá)式生成一個(gè)對象,然后將對象地址賦予對應(yīng)的變量。

  • 變量的刪除

    a = 1
    del(a)
    

    變量刪除后,沒有被引用的對象會(huì)被垃圾回收機(jī)制自動(dòng)回收。

  • 鏈?zhǔn)劫x值

    x = y = z = 1
    定義了x,y,z三個(gè)變量,且他們的值都是1.

  • 結(jié)構(gòu)賦值

    x,y = 1,2

    相當(dāng)于x=1,y=2

    一個(gè)技巧,通過這樣的方式可以很容易實(shí)現(xiàn)變量的交換,如:

    x = 1
    y = 2
    x,y = y,x # 一句話就搞定,這就是Python的優(yōu)勢
    print(x,y) # 2,1
    
  • 常量

    這個(gè)。。。。Python中沒有常量,切記,真的沒有??梢栽诰幋a是約定一個(gè)變量為常量,如:CONST = 1,然后記住不要修改它哦

內(nèi)置數(shù)據(jù)類型和常用運(yùn)算符號

  • 內(nèi)置類型

    1、整型

    Python 中,除 10 進(jìn)制,還有其他三種進(jìn)制:

    0b或0B二進(jìn)制: 0 1
    0o或0O八進(jìn)制: 0 1 2 3 4 5 6 7
    0x或0X十六進(jìn)制:0 1 2 3 4 5 6 7 8 9 a b c d e f
    

    ** 注意這個(gè)在Python中沒有大小限制,無限大;所以科學(xué)計(jì)算還是Python好。

    int() 方法可以將浮點(diǎn)類型、布爾、符合要求的字符串轉(zhuǎn)換成整數(shù)

    整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算時(shí),表達(dá)式結(jié)果自動(dòng)轉(zhuǎn)型成浮點(diǎn)數(shù)。

    int(9.7) # 9直接去掉小數(shù)點(diǎn)后面的
    int("9") # 9
    int(True) # 1
    int(False) # 0
    int("3.14") # 報(bào)錯(cuò)
    int("abcef") # 報(bào)錯(cuò)
    
    3+7.0 # 10.0 自動(dòng)轉(zhuǎn)換
    

    四舍五入用round()函數(shù)

    2、浮點(diǎn)型

    兩個(gè)表達(dá)方式:3.14 或 314e-2

    float() 可以進(jìn)行強(qiáng)制轉(zhuǎn)換

    3、布爾型

    兩個(gè)值:True 和 False

    布爾值得本質(zhì)是0和1,所以他們可以進(jìn)行數(shù)學(xué)運(yùn)算

    1 + True # 2
    1 + False # 1
    

    4、字符串

    雙引號“”定義一個(gè)字符串

  • 數(shù)學(xué)運(yùn)算符

    +,-,,/,//,%,*

    如:

    #  //是整除的運(yùn)算
    a = 9//4 # 2
    # **是冥運(yùn)算
    a = 2**10 # 1024
    

    被除數(shù)為0會(huì)報(bào)錯(cuò),還是寫一下吧。

  • 比較關(guān)系運(yùn)算符

    > , >= , <, <=, ==, !=

    關(guān)系運(yùn)算符是可以連用的,如:

    a = 3
    1 < a < 4 # True
    1 < a != 5 # True
    3 != a !=5 # False
    
  • 邏輯運(yùn)算符

    and,or,not

  • 同一運(yùn)算符

    is, is not

    同一運(yùn)算符用于比較對象的地址。

    a = 1
    b = 1
    a is b # True
    
    c = 2
    a is not c # True
    

    is 與 == 區(qū)別:

    is 用于判斷兩個(gè)變量引用對象是否為同一個(gè),既比較對象的地址。
    == 用于判斷引用變量引用對象的值是否相等,默認(rèn)調(diào)用對象的 eq()方法。

  • 按位運(yùn)算符

&與,|或,^異或,>>,<< 移位

a = 0b1001
b = 0b1000

bin(a|b) # 0b1001 參加運(yùn)算的兩個(gè)對象只要有一個(gè)為1,其值為1
bin(a&b) # 0b1000 兩位同時(shí)為“1”,結(jié)果才為“1”,否則為0
bin(a^b) # 0b1    參加運(yùn)算的兩個(gè)對象,如果兩個(gè)相應(yīng)位為“異”(值不同),則該位結(jié)果為1,否則為0。

bin(a>>2) #0b10 右邊移出的空位一律補(bǔ)0,丟棄移出的位
bin(a<<2) #0b100100 左邊移出的空位一律補(bǔ)0
  • 復(fù)合賦值運(yùn)算符

    就是+=,*=,//=,|=等等

    a = 1
    a += 1 # 2   a = a + 1
    

    注意:Python沒有++,--

  • 運(yùn)算符優(yōu)先級問題

    1. 乘除優(yōu)先加減
    2. 位運(yùn)算和算術(shù)運(yùn)算 > 比較運(yùn)算符 > 賦值運(yùn)算符 > 邏輯運(yùn)算符

字符串

Python字符串的特點(diǎn)

  • 不可變

    python中的字符串是不可變化,修改字符串實(shí)際是新建一個(gè)字符串對象,將新的對象地址賦值給引用它的對象。

    a = "abcdef"
    a[3] = "1" # 注意,這里會(huì)報(bào)錯(cuò)
    
  • 字符串是一個(gè)序列

    可以通過下標(biāo)進(jìn)行訪問

    正向:最左側(cè)第一個(gè)字符0開始直到len(str)-1為止

    反向:最右側(cè)第一個(gè)字符-1開始倒數(shù)直到-len(str)為止。

  • 不支持單字符,單字符也是字符串

  • 直接支持Unicode編碼

    在python3中,字符編碼集是Unicode的,支持世界上任何語言集合,默認(rèn)是16位,內(nèi)置函數(shù)ord()可以把字符轉(zhuǎn)換成對應(yīng)的Unicode碼;chr()可以把十進(jìn)制數(shù)字轉(zhuǎn)換成對應(yīng)的字符。

    ord('A') # 65
    chr(65) # A
    
    ord('林') # 26519
    chr(26519) # 林
    

使用',",''',"""創(chuàng)建字符串和轉(zhuǎn)義符號\

''' 或 """ 可以創(chuàng)建多行字符串
"   里面可以不用轉(zhuǎn)義'
\  用來轉(zhuǎn)義特殊符號
a = ''' 測試創(chuàng)建多行字符串:
a = "abcd"
b = "ooooo"
完畢'''
b = "雙引號'可以不用轉(zhuǎn)義'"
c = '' # 控制符串
d = '\'\'\'轉(zhuǎn)義符號測試 \r\t\\\n完畢'

e = "abcd"
e[1] # b

常用操作及內(nèi)置函數(shù)

  • 字符串拼接符號: +
  • 字符串復(fù)制符號: *
  • in 或 not in 關(guān)鍵字,判斷某個(gè)字符串)是否存在于指定字符串中。
  • is 或 is not 判斷兩個(gè)對象是否同一個(gè)對象
  • == 或 != 判斷兩個(gè)字符串值是否相等
a = "a" + "b" # ab
b = "a" * 3 # aaa

c = "ab"
c is a # True
c is not a # False

d = "abc#"
e = "abc#"

#### 此處需要注意,Python僅對字符串由_、字符、數(shù)字組成的字符串進(jìn)行緩存(字符串駐留機(jī)制)
d is e # False 
d is not e # True

d == e # True

"a" in d # True

"f" not in d # True

a1 = "ab"
a2 = "bc"

a1 + a2 == "abbc" # True
a1 + a2 is "abbc" # False

內(nèi)置函數(shù)
  • len() 獲取字符串的長度
  • str() 將其他類型轉(zhuǎn)換成字符串
a = "abcdef"
b = ""
c = 314e-2

len(a) # 6
len(b) # 0

str(c) # 3.14
str(True) # 1
成員函數(shù)
  • replace()字符串替換

    a = 'abcdef'
    b = a.replace("c","x")
    
    print(a) # abcdef 注意a并沒改變
    print(b) # abxdef
    
    a = a.replace("c","x")
    print(a) # abxdef a引用地址重新指向
    
    
  • slice()切片操作提取子字符串

    語法:[起始start:終止end:步長step],不包含end位置的字符

    a = "0123456789"
    a[0:2] # 01
    a[:] # 0123456789 提取所有字符
    a[:2] # 01 默認(rèn)start 0
    a[::2] # 02468 步長為2
    a[9:100] # 9 結(jié)束超過范圍了,相當(dāng)于直接到最后一個(gè)
    a[9:8] # '' 開始位置超過范圍了,不報(bào)錯(cuò)返回空
    a[11:100] # '' 開始位置超過范圍了,不報(bào)錯(cuò)返回空
    a[:2:-1] # 9876543 步長為負(fù)數(shù)時(shí),start默認(rèn)為-1
    a[:2:-2] # 9753
    
    a[-8:-2] # 234567 正向截取,從倒數(shù)第8個(gè)到倒數(shù)第2個(gè)(不含)
    a[-2:-1] # 8 正向截取,結(jié)束位置不對,只取開頭的值
    
    print(a) # 0123456789 說明所有操作返回的是新對象地址
    
  • split()、join()分割和合并

    split()可以基于指定分隔符(字符串或正則表達(dá)式)將字符串分隔成子字符串列表,默認(rèn)為空

    join()用于將字符串列表連接起來

    a = "a b c     d"
    a.split() # ['a', 'b', 'c', 'd'] 相當(dāng)于用\s+分割
    b = ["a","b","c"]
    *.join(b) # a*b*c
    "".join(b) # abc 注意這個(gè)性能優(yōu)于 + 連接字符
    
  • strip()去除字符串首尾指定信息

    默認(rèn)去掉首尾的空格,可以指定去掉,如strip("##")

  • lstrip()去除字符串左邊指定信息

  • rstrip()去除字符串右邊指定信息

  • capitalize()、title()、upper()、lower()、swapcase()大小寫轉(zhuǎn)換

  • center()、ljust()、rjust()這三個(gè)函數(shù)用于對字符串實(shí)現(xiàn)排版

  • isalnum()是否為字母或數(shù)字

  • isalpha()檢測字符串是否只由字母組成(含漢字)。

  • isdigit()檢測字符串是否只由數(shù)字組成

  • isspace()檢測是否為空白符

  • isupper()是否為大寫字母

  • islower()是否為小寫字母

  • startswith()、endswith()、find()、rfind()、count()字符串查找

a = "abcdabcdabcdabcd"
b = "abcdabcd測試abcdabcd"

a.startswith("abcd") #True
a.endswith("d") # True
a.find("abcd") # 0 第一次出現(xiàn)位置
a.rfind("abcd") # 14 最后一次出現(xiàn)的位置
a.count("abcd") # 4出現(xiàn)4次

a.capitalize() # Abcdabcdabcdabcd
b.swapcase()  # ABCDABCD測試ABCDABCD

b.center(30,'*') # ******abcdabcd測試abcdabcd****** 30為填充后的總長度
  • format() 格式化輸出

    基本語法是通過 {索引/參數(shù)} 和 :

    a = "測試格式化:{0},{1},{0}"
    b = "測試格式化:{tag1},{tag2},{tag1}"
    a.format("占位0","占位1") # '測試格式化:占位0,占位1,占位0'
    b.format(tag1="占位0",tag2="占位1") # '測試格式化:占位0,占位1,占位0'
    
    c = "格式化:{0:*^10},{1:#>10},{0:<10}"
    c.format("占位0","占位1") # '格式化:***占位0****,#######占位1,占位0       '  注意最后的空格
    

    浮點(diǎn)數(shù)通過f,整數(shù)通過d進(jìn)行需要的格式化。

    a = "我的身高是{0:d}cm,體重{1:.2f}kg"
    a.format(180,71.5489) # '我的身高是180cm,體重71.55kg' 注意有四舍五入
    '''
    數(shù)字         格式    輸出          描述
    3.1415926   {:.2f}  3.14         保留小數(shù)點(diǎn)后兩位
    3.1415926   {:+.2f} 3.14         帶符號保留小數(shù)點(diǎn)后兩位
    2.71828     {:.0f}  3            不帶小數(shù) 
    5           {:0>2d} 05           數(shù)字補(bǔ)零 (填充左邊, 寬度為 2)
    5           {:x<4d} 5xxx         數(shù)字補(bǔ) x (填充右邊, 寬度為 4)
    10          {:x<4d} 10xx         數(shù)字補(bǔ) x (填充右邊, 寬度為 4)
    1000000     {:,}    1,000,000    以逗號分隔的數(shù)字格式
    0.25        {:.2%}  25.00%       百分比格式 
    1000000000  {:.2e}  1.00E+09     指數(shù)記法
    13          {:10d}  13           右對齊 (默認(rèn), 寬度為 10)
    13          {:<10d} 13           左對齊 (寬度為 10)
    13          {:^10d} 13           中間對齊 (寬度為 10)
    '''
    

Python中的序列

序列是一種數(shù)據(jù)存儲方式,用來存儲一系列的數(shù)據(jù)。在內(nèi)存中,序列就是一塊用來存放多個(gè)值的連續(xù)的內(nèi)存空間。Python中常用的序列結(jié)構(gòu)有:字符串、列表、元組、字典、集合。

列表

列表是大小可變的、用于存儲任意數(shù)目、任意類型的數(shù)據(jù)集合。

  • 創(chuàng)建列表

    1. 基本語法
    a = [] # 空列表
    b = [1, 2, 3,'abc', True]
    
    1. 通過list()創(chuàng)建

    將可迭代的對象轉(zhuǎn)換成列表

    a = list() # 空列表
    b = list('abcd,efg') # ['a','b',....]
    c = list(range(10))
    
    1. 通過range()創(chuàng)建

      語法:range([start,] end [,step])

    2. 推導(dǎo)式生成列表

      可以非常方便的創(chuàng)建復(fù)雜的列表

      a = [x*2 for x in range(5)] # 循環(huán)創(chuàng)建多個(gè)元素
      b = [x*2 for x in range(100) if x%6==0] #通過 if 過濾元素
      
  • 列表元素的添加

    1. append()

      在列表尾部添加一個(gè)元素,原列表地址不變,這個(gè)性能沒問題,推薦使用

    2. +運(yùn)算符

      會(huì)產(chǎn)生新的對象,元素過大影響性能。

    3. extend()

      不會(huì)產(chǎn)生新的對象,在原對象尾部直接追加新的元素

    4. insert()

      插入元素到列表對象的任意制定位置。插入元素后面的元素會(huì)發(fā)生移動(dòng)。對性能有影響。

    5. *復(fù)制擴(kuò)展

    a = [1,2,3,4]
    a.append(5)
    print(a) # [1, 2, 3, 4, 5]
    id(a) # 4398822896
    a = a + [5,6]
    print(a) # [1, 2, 3, 4, 5, 5, 6]
    id(a) # 4398824096
    a.extend([7,8,9])
    print(a) # [1, 2, 3, 4, 5, 5, 6, 7, 8, 9]
    id(a) # 4398824096
    a.insert(4,100)
    print(a) # [1, 2, 3, 4, 100, 5, 5, 6, 7, 8, 9]
    id(a) # 4398824096
    a = a * 2
    print(a) #[1, 2, 3, 4, 100, 5, 5, 6, 7, 8, 9, 1, 2, 3, 4, 100, 5, 5, 6, 7, 8, 9]
    id(a) # 4398822896
    

    疑問: 這里最后的id和之前的一樣了,屬于什么情況呢,新分配了一個(gè)剛才使用過的地址?

  • 元素的刪除

    1. del

      語法:del a[1],本質(zhì)是數(shù)組的拷貝,將刪除元素后面的元素地址一次向前拷貝。

    2. pop

      pop()刪除并返回指定位置元素,如果未指定位置則默認(rèn)操作列表最后一個(gè)元素。推薦使用默認(rèn)操作,不影響性能。

    3. remove

      刪除首次出現(xiàn)的指定元素,若不存在該元素拋出異常。

    a = [1,2,3,4,5]
    del a[1] 
    print(a) # [1, 3, 4, 5]
    a.pop() # 5
    print(a) # [1, 3, 4]
    a.remove(3)
    print(a) # [1, 4]
    
  • 列表基本操作

    1. 通過索引直接訪問元素。索引的區(qū)間在[0, 列表長度-1]這個(gè)范圍。超過索引會(huì)引發(fā)異常。

    2. index() 可以獲取指定范圍內(nèi)元素首次匹配的索引

      語法: index(value,[start,[end]])

    3. count() 獲得指定元素在列表中出現(xiàn)的次數(shù)

    4. len() 獲取列表長度

    5. in 或 not in判定元素是否存在于列表

    6. 列表切片,和前面的字符串操作基本一致

    7. 列表的遍歷

      語法:for item in listA:

    8. 列表復(fù)制: [] + listA,直接listA = listB 只是引用賦值

    9. max 和 min 返回列表中最大和最小值

    10. sum 對數(shù)值列表進(jìn)行求和

    a = [1,2,3,4,5]
    b = [1,2,3,4,5]
    
    a == b # True
    a is b # False
    
    a[0] # 1
    a.index(2) # 1
    
    a.count(5) # 1 
    len(a) # 5
    5 in a # True
    a[::-1] # [5, 4, 3, 2, 1] 翻轉(zhuǎn)列表元素
    
    c = [] + a
    c == b # True
    c is a # False
    
    d = a
    d is a # True
    
    for item in d:
        print(item) # 依次打印 1 2 3 4 5
    
    sum(d) # 15
    max(d) # 5
    min(d) # 1
    
    e = ['a','abc',1,True,0,False] # 不適用 max sum min 會(huì)報(bào)錯(cuò)
    
  • 列表排序

    1. 對象方法sort()在原列表中進(jìn)行排序

    2. 對象方法reverse()翻轉(zhuǎn)原列表

    3. 內(nèi)置函數(shù)sorted()返回排序后的新列表,原列表不變

    4. 內(nèi)置函數(shù)reversed()返回翻轉(zhuǎn)數(shù)據(jù)后的迭代器對象,原列表不變

      注意這里返回的的是迭代器,需要用list()生成列表,迭代器只能用一次

```python
a = [1,2,3,4,5]
b = ['a','b','c','d']
c = ['a','abc','1',2,True]

a.sort() 
print(a) # [1,2,3,4,5]
b.sort(reverse=True) #
print(b) # ['d', 'c', 'b', 'a']

c.sort() # 報(bào)錯(cuò):not supported between instances of 'int' and 'str'

a.reverse()
print(a) # [5, 4, 3, 2, 1]

a1 = sorted(a)
print(a) # [5, 4, 3, 2, 1]
print(a1) # [1, 2, 3, 4, 5]

```
  • 二緯和多維列表

    可以任意嵌套多維列表

    a = [
        [1,2,3,4],
        5,
        ['a','b','c',[10,20,30]],
        'abcd'
    ]
    '''
    這樣的列表需要一些技巧才能進(jìn)行遍歷
    '''
    
    • 思考

      Python的列表和Javascipt的數(shù)組很像,都是動(dòng)態(tài)的,可以隨時(shí)中增加的,對其中元素類型不做任何限制的。對處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu),提供了相當(dāng)?shù)姆奖恪?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容