1. 程式人生 > >Python入門學習筆記————08(list函式,元組)

Python入門學習筆記————08(list函式,元組)

#傳值與傳地址的區別
#對於簡單的數值,採用傳值的操作,即在函式內的操作不影響外面的變數
#對複雜的變數,採用傳遞地址的操作,此時進行的操作即是對函式本身的操作
def a(n):
    n[2]=300
    print(n)
    return None
def b(n):
    n += 100
    print(n)
    return None
an = [1,3,5,67,8]
bn = 9
print (an)
a(an)
print(an)
print(bn)
b(bn)
print(bn)
[1, 3, 5, 67, 8]
[1, 3, 300, 67, 8]
[1, 3, 300, 67, 8]
9
109
9

關於列表的函式

In [4]:

 

l = ['as','hello',23,45]
l

Out[4]:

['as', 'hello', 23, 45]

In [6]:

 

# append 插入內容,在末尾追加
a= [i for i in range(1,5)]
print (a)
a.append(100)
print(a)
[1, 2, 3, 4]
[1, 2, 3, 4, 100]

In [8]:

 

#insert指定位置插入
#insert(index,data)
print(a)
a.insert(3,666)
print(a)
[1, 2, 3, 666, 4, 100]
[1, 2, 3, 666, 666, 4, 100]

In [11]:

 

#刪除操作
#del  刪除
#把最後一為元素拿出來 pop
b=[1,435,6,6]
c = b.pop()
print(c)
print(b)
6
[1, 435, 6]

In [14]:

 

#remove:在列表中刪除指定的值的元素
a = [2,5,2,45,4,5]
print(id(a))
print(a)
a.remove(45)
print(a)
print(id(a))
#兩個id相同
140328058912520
[2, 5, 2, 45, 4, 5]
[2, 5, 2, 4, 5]
140328058912520

In [17]:

 

#clear:清空列表
print(a)
print(id(a))
a.clear()
print(a)
print(id(a))
#如果想要晴空一個列表可以使用a = []或者a = list()
#但是原資料未被刪除
[]
140328058912520
[]
140328058912520

In [20]:

 

#reverse:資料原地fanzhuan
a = [1,2,3,4,5]
print(a)
print(id(a))
a.reverse()
print(a)
print(id(a))
[1, 2, 3, 4, 5]
140327999442824
[5, 4, 3, 2, 1]
140327999442824

In [22]:

 

#extend:擴充套件列表,,兩個列表,,把一個列表接在另一個後面
a = [1,2,3,4]
b = [5,6,7,8]
print(a)
print(id(a))
a.extend(b)
print(a)
print(id(a))
[1, 2, 3, 4]
140327990302152
[1, 2, 3, 4, 5, 6, 7, 8]
140327990302152

In [29]:

 

#count:查詢列表中指定值或元素的個數
a = [1,2,3,4,5,6,7,8]
print(a)
a.append(8)
print(a)
a.insert(3,8)
print(a)
a_8=a.count(8)
print(a_8)
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 8]
[1, 2, 3, 8, 4, 5, 6, 7, 8, 8]
3

In [34]:

 

#copy :拷貝,淺拷貝
#列表賦值示例 
#只是簡單地傳遞地址,並沒有產生新的資料
a = [1,2,3,4,5]
print(a)
b = a
print(b)
b[3]=777
print(a)
print(b)
print('#'*20)
#由此產生了copy函式
b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))
print('%'*20)
b[3] = 666
print(a)
print(b)
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[1, 2, 3, 777, 5]
[1, 2, 3, 777, 5]
####################
[1, 2, 3, 777, 5]
140327999240520
[1, 2, 3, 777, 5]
140327999106568
%%%%%%%%%%%%%%%%%%%%
[1, 2, 3, 777, 5]
[1, 2, 3, 666, 5]

In [44]:

 

#深拷貝與淺拷貝的區別
#出現以下結果是應為copy是淺拷貝函式,只拷貝一層
#深層拷貝需要使用特定的工具
a  = [1,2,3,[23,34,45]]
b = a.copy()
print(a)
print(b)
print(id(a))
print(id(b))
print('@'*20)
print(id(a[3]))
print(id(b[3]))
print('$'*20)
a[3][2]=333
print(a)
print(b)
[1, 2, 3, [23, 34, 45]]
[1, 2, 3, [23, 34, 45]]
140327990302600
140327999317512
@@@@@@@@@@@@@@@@@@@@
140327654263880
140327654263880
$$$$$$$$$$$$$$$$$$$$
[1, 2, 3, [23, 34, 333]]
[1, 2, 3, [23, 34, 333]]

元組——tuple

  • 元組可以看作是一個不可更改的list

    元組建立

In [52]:

 

#建立空元組
t = ()
print(type(t))
#建立一個只有一個值的元組
t = (1,)  #注意逗號
print(type(t))
# 也可這樣
t = 1,
print(type(t))
#沒有逗號
t = (1)
print(type(t))
#建立多值
t = (1,2,3,4)
print(type(t))
print(t)
#使用其他結構建立
l = [1,2,3,4,5]
t = tuple(l)
print(type(t))
print(t)
<class 'tuple'>
<class 'tuple'>
<class 'tuple'>
<class 'int'>
<class 'tuple'>
(1, 2, 3, 4)
<class 'tuple'>
(1, 2, 3, 4, 5)

元組的特性

  • 有序
  • 元組資料可以訪問,不能修改
  • 元組資料可以是任意型別
  • 除了list的可修改外的特性,元組都具有
  • 索引,分片,序列相加,相乘,成員資格操作等,與list一模一樣

In [53]:

 

#索引操作
t = (1,2,3,4)
print(t[2])
3

In [55]:

 

#超標
print(t[12])
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-55-f3c331a907e0> in <module>()
      1 #超標
----> 2 print(t[12])

IndexError: tuple index out of range

In [78]:

 

t = (1,2,3,4,5,6)
t1 = t[1:4]
print(id(t))
print(id(t1))
print(t1)
#切片可以超標
t2 = t[1:100]
print(t2)
140328169459432
140327990359816
(2, 3, 4)
(2, 3, 4, 5, 6)

In [81]:

 

#序列相加
t1 = (1,2,3)
t2 = (4,3,5)
#傳址操作
print(t1)
print(id(t1))
t1 = t1 + t2
print(t1)
print(id(t1))
#tuple的不可修改指的是內容的不可修改
t1[1]= 100
(1, 2, 3)
140327990359816
(1, 2, 3, 4, 3, 5)
140327999448744
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-81-80cb26bf82fa> in <module>()
     10 
     11 #tuple的不可修改指的是內容的不可修改
---> 12 t1[1]= 100

TypeError: 'tuple' object does not support item assignment

In [82]:

 

#元組相乘
t = (1,2,3)
t = t*3
print(t)
(1, 2, 3, 1, 2, 3, 1, 2, 3)

In [83]:

 

 
#成員檢測
t = (1,2,3)
if 2 in t:
    print('YES')
else:
    print('NO')
YES

In [85]:

 

#元組遍歷,一般採用for
#單層遍歷
t = (1,2,3,'hello','good','boy')
for i in t:
    print(i,end=' ')
1 2 3 hello good boy 

In [88]:

 

#雙層遍歷
t = ((1,2,3),('i','love','hello'),(22,3,4))
for i in t:
    print(i)
 
for m,n,k in t:
        print(m,'--',n,'--',k)
(1, 2, 3)
('i', 'love', 'hello')
(22, 3, 4)
1 -- 2 -- 3
i -- love -- hello
22 -- 3 -- 4