1. 程式人生 > >Python 語言基礎(三)之列表,元組

Python 語言基礎(三)之列表,元組

HA std sharp 逗號 打印圖形 但是 有序集合 我們 通過

一、列表

  1.概述:

  通過前兩天的學習,我們知道變量可以存儲數據,但是一個變量只能存儲一個數據,現在有一個班級,班級有20個人,現在求班級的平均年齡。

  本質:list列表的本質是一種有序的集合

  2.創建列表

  語法:列表=[元素1,元素2,元素3……]說明:列表中的選項被稱為元素,跟string類似,下標也是從0開始計數  

#創建空列表
list1 = []
#創建帶有元素的列表
list2 = [10, 20, 30, 10]
print(list2)

  在列表中元素的數據類型可以不同(靈活性)

  

list3 = [33, "good", True, 10.32]
print(list3)

  3.列表元素的訪問

  列表的取值

  功能:訪問list列表中元素值

  語法:列表名[索引]

list4 = [22, 33, 12, 32, 45]
#下標從0開始,最大值為len(list4)-1
print(list4[0])

  註意:當索引值大於len(list4)-1的時候,會出現錯誤  

  列表元素的替換

  功能:更改列表元素的值

  語法:列表[下標] = 值

  

list4 = [22, 33, 12, 32, 45]
list4[0] = "hello"
print(list4[0])

  4.列表操作

  列表的組合

  語法:列表3 = 列表1 + 列表2

list1 = [1, 2, 3]
list2 = [hello, yes, no]
list3 = list1 + list2
print(list3)

  列表的重復

  語法:列表 = 列表1*n

  若存在則返回True,否則返回False

list1 = [1, 2, 3]
print(1 in list1)

  列表截取

  語法:列表[start:end]表示獲取從開始下標到結束下標的所有元素,包含start不包含end 

list1 = [1, 2, 3, hello, yes, no]
print(list1[2:4])
#若不指定start,則默認從0開始截取,截取到指定位置
#若不指定end,則從指定位置開始截取,截取到末尾結束

  二維列表

  語法:列表 = [列表1,列表2,列表3,……,列表n] 

#創建二維列表,即列表中的元素還是列表
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]

  二維列表取值

  語法:列表名【下標1】【下標2】

  註意:下標1代表第n個列表(下標從0 開始,下標2代表第n個列表中的第n個元素)

list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
print(list1[0][0])

  5.列表的方法

  list.append(元素/列表)

  功能:在列表中末尾添加新的元素【在原本的列表中追加元素】

  註意;append()中的值可以是列表也可以是普通元素

>>> list1 = [3, 4, 6]
>>> list1.append(6)
>>> print(list1)
[3, 4, 6, 6]

  list.extend(列表)

  功能:在列表的末尾一次性追加另外一個列表中的多個值

  註意:extend()中的值只能是列表/元組【一個可叠代對象】,不能是元素 

>>> list1 = [1,2,3]
>>> list2 = [3, 4,5]
>>> list1.extend(list2)
>>> print(list1)
[1, 2, 3, 3, 4, 5]

  list.insert(下標值,元素\列表)

  功能:在下標處插入元素,不覆蓋原本的數據,原數據向後順延

  註意:插入的數據可以是元素也可以為列表

>>> list1 = [1,2,3]
>>> list1.insert(1,0)
>>> print(list1)
[1, 0, 2, 3]
>>> list1.insert(1,[2, 4, 8])
>>> print(list1)
[1, [2, 4, 8], 0, 2, 3]

  list.pop(下標值)

  功能:移除列表中指定下標處的元素(默認移除最後一個元素),並返回移除的數據

>>> list1 = [1, [2, 4, 8], 0, 2, 3]
>>> list1.pop()
3
>>> print(list1)
[1, [2, 4, 8], 0, 2]
>>> list1.pop(2)
0
>>> print(list1)
[1, [2, 4, 8], 2]

  list.remove(元素)

  功能:移除列表中的某個元素第一個匹配結果

>>> list1 = [1, 2, 3]
>>> list1.remove(2)
>>> print(list1)
[1, 3]

  list.clear()

  功能:清除列表中所有的數據  

>>> list1 = [1, 2, 3]
>>> list1.clear()
>>> print(list1)
[]

  list.index(下標[,start][,stop])

  功能:從指定的範圍的列表中找出某一個第一匹配的索引值

  若不指定範圍,則默認是整個列表 

>>> list1 = [1, 2, 3]
>>> list1.index(2)
1
>>> list1.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list

  註意:若在列表中找不到這個元素,則會報錯

  list.count(元素)

  功能:查看元素在列表中出現的次數 

>>> list1 = [1, 2, 3, 1]
>>> list1.count(1)
2

  len(list)

  功能:獲取元素列表個數

>>> list1 = [1, 2, 3, 1]
>>> len(list1)
4

  max(list)

  語法:獲取列表中的最大值

>>> list1 = [1, 2, 3, 1]
>>> max(list1)
3

  min(list)

  語法:獲取列表中的最小值 

>>> list1 = [1, 2, 3, 1]
>>> min(list1)
1

  list.reverse()

  語法:列表倒序

>>> list1 = [1, 2, 3, 1]
>>> list1.reverse()
>>> print(list1)
[1, 3, 2, 1]

  list.sort()

  語法:列表排序 默認升序

>>> list1 = [1, 2, 3, 1]
>>> list1.sort()
>>> print(list1)
[1, 1, 2, 3]

  淺拷貝

  語法:list1 = [1, 2, 3, 4]

     list2 = list1

  深拷貝:

  語法:list1 = [1, 2, 3, 4]

     list2 = list1.copy()

  其中深拷貝為內存拷貝,開辟了新的內存空間

  

  list(元組)

  功能:將元組轉為列表  

>>> list1 = list((1, 2, 3, 4))
>>> print(list1)
[1, 2, 3, 4]

  列表的遍歷

  使用for循環遍歷列表

  語法:

  for 變量名 in列表

    語法

  功能:for循環主要用於遍歷列表

  遍歷指的是依次訪問列表中的每個元素,獲取每個下標對應的元素值

  說明:按照順序獲取列表中的每個元素,賦值給變量名,再執行語句,如此循往復,直到取完列表中所有的為止 

>>> list1 = [hello, 78, 你好, good]
>>> for item in list1:
...     print(item)
... 
hello
78
你好
good

  同時遍歷下標與元素

  語法:

  for 下標,變量 in enumerate(列表)

    語句

>>> list1 = [hello, 78, 你好, good]
>>> for index,item in enumerate(list1):
...     print(index, item)
... 
0 hello
1 78
2 你好
3 good
enumerate()[枚舉]函數用於一個可遍歷的數據對象(如列表,元組或者字符串)組合為一個索引序列,同時列出數據與數據下標,一般使用在for循環中
enumerate(obj, [start =0])
obj:一個可叠代對象
start:下標起始位置

  6.元組(tuple)

  概述:

  本質上是一種有序集合,和列表非常的相似,列表使[]表示,元組使用()表示

  特點:一旦初始化,就不能發生改變

  

  元組的創建:

  格式

  元組名 = (元素1,元素2,元素3,……) 

#創建空的元組
tuple1 = ()
print(tuple1)
#創建帶有元素的元組
tuple2 =(22, 33, 14, 109)
print(tuple2)

#與列表類似,元組中的元素類型可以不同
tuple3 = (23,True,"good")
print(tuple3)

#定義只有一個元素的元組
tuple4 = (1)  #這定義的不是元組而是整數1
tuple4 = (1,) #定義一個元素的元組定義時必須加一個逗號",",用來消除歧義

  

  元組元素的訪問

  訪問元組中的元素:

  格式:元組名[下標] 

tuple1 = (2040201401)
print(tuple1[0])
#註意使用下標取值的時候,要註意下標的取值範圍,不要下標越界
#獲取最後一個元素
print(tuple1[-1])

  修改元組

  在元組定義的時候大家都知道元組一旦初始化就不能改變,但是現在如果我想改變元組怎麽辦?

  元組是不能修改的,但是列表可以,元組中的元組的數據類型可以是不同類型的,因此我們可以通過元組中添加一個列表,而列表是可以修改的,進而來“修改”我們的元組 

tuple1 = (hello, you,[20, 30])
#修改元組
tuple1[0] = hi 
#報錯,元組不能修改
tuple1[2][1] = good

  註意:從表面上看我們的元組確實是改變了,但其實改變的不是我們的元組,而是我們list的元素,所謂tuple不變是說,tuple的每個元素的指向永遠不變,一旦它指向了這個list,就不能改變指向其他的對象,但是指向的list本身是可變的!

  刪除元組

  元組是不可變的,但是我們可以使用del語句刪除整個元組  

tuple1 = (hello, hi)
del tuple1
print(tuple1)
#此時會報錯

  元組操作

  元組連組合

  語法:

  元組1  元組2

  元組3 = 元組1 + 元組2

tuple1 = (1,  2, 3)
tuple2 = (4, 5, 6)
print(tuple1 + tuple2)
#結果
(1, 2, 3, 4, 5, 6)

  註意:元素連接組合並沒有改變原來的元組,而是成了新的元組

  

  元組的重復

  語法:

  元組2 = 元組1 * n 

tuple1 = (1,  2, 3)
tuple2 = tuple1 * 3
print(tuple2)
#結果
(1, 2, 3, 1, 2, 3, 1, 2, 3)

  判斷元素是否在元組中

  語法:

  元素 in 元組

  若存在則返回True,否則返回False

  

tuple1 = (1,  2, 3)
print( 1 in tuple1)
#結果
True

tuple1 = (1,  2, 3)
print( 5 in tuple1)
#結果
False

  元組的截取

  語法:

  元組名[start:end]

  截取範圍【start,end)

  功能:獲取開始下標到結束下標之前的所有元素。

  若不指定start則默認是從頭開始截取到指定位置。

  若不指定end則默認從指定位置截取到結尾

tuple1 = (1,  2, 3, 8, hello, good)
tuple2 = tuple1[2:5]
print(tuple2)
#結果
(3, 8, hello)

tuple1 = (1,  2, 3, 8, hello, good)
tuple2 = tuple1[:5]
print(tuple2)
#結果
(1, 2, 3, 8, hello)

  7.元組的方法

  len(tuple)

  功能:獲取元組元素的個數 

tuple1 = (1,  2, 3, 8, hello, good)
print(len(tuple1))
#結果
6

  max(tuple)

  功能:獲取元組中元素的最大值 

tuple1 = (1,  2, 3, 8, 20, 13)
print(max(tuple1))
#結果
20

  min(tuple)

  功能:獲取元組中元素的最大值

tuple1 = (1,  2, 3, 8, 20, 13)
print(min(tuple1))
#結果
1

  tuple(list)

  功能:將列表轉換為元組 

list1 = [1,  2, 3, 8, 20, 13]
print(tuple(list1))
#結果
(1, 2, 3, 8, 20, 13)

  

1.使用for循環打印圖形

    ‘‘‘
    *
    **
    ***
    ****
    *****
    ‘‘‘

2.寫一個雙色球彩票系統,系統可以隨機產生一組數據,一組彩票數據有六位數,這六位數的的取值範圍是0和1。

一張彩票是兩塊錢,可以設置用戶的金額,用戶可以選擇繼續買票或者是退出。買票和退出的時候要求打印剩余金額。

用戶輸入猜測的數據,若是猜對,則打印”恭喜你中大獎了“,若沒猜中則打印”繼續加油!“。

Python 語言基礎(三)之列表,元組