1. 程式人生 > >python資料結構之列表、元組及元組與列表之間的相互轉換

python資料結構之列表、元組及元組與列表之間的相互轉換

一、列表(list)

#  names="chenyanhui wujiawei heweimin zhouqingxiang"
#  print(names)



names=["chenyanhui","wujiawei","heweimin","tuoqianqian","zhouqingxiang"]
names.append("yujianfeng")       #追加在後面
names.insert(1,"tuoqianqian")     #insert() 插到某個位置
names.insert(3,"maoxiaoyu")
names[2] = "chenzhenwei"          # 替換
print(names)

#      print(names[0],names[2])
#      print(names[1:3])    #切片  顧首不顧尾
#      print(names[3])      #切片
#      print(names[-2])     #切片   ‘-’倒序選擇
#      print(names[-2:])    #切片    倒序的第一個0可以省略
#      print(names[:2])     #同上 0可以省略

#delete
# #names.remove("tuoqianqian")   #刪除名字
#del names[1]=names  pop(1)       #刪除序號的第幾個
#names.pop()                      #不加下標就是刪除最後一個

print(names)
#print(names.index("chenzhenwei"))   #index 索引
#print (names[names.index("chenzhenwei")])   #打出索引人的名字

#print(names.count("tuoqianqian"))     #count 統計
#names.reverse()                     #reverse 反轉順序
#names.clear()                      #clear 清空
#names.sort()                       #排序:特殊符號、數字、大寫、小寫  (ASCCII碼)
print(names)
names2=[1,2,3,4,5]
names.extend(names2)                #exted 擴充套件 把n2拓展到裡面去你  拓展後n2依然存在
#del names2
print(names,names2)

 3.列表的應用(深、淺複製)

import copy
names=["chenyanhui","wujiawei","heweimin",["jack","bob"],"tuoqianqian","zhouqingxiang"]

print(names[0:-1:2])     #切片
print(names[::2])     #省略0 -1

'''
#name2=names.copy()               #copy  淺層複製
# name2=copy.deepcopy(names)        #deepcopy 深度複製
print(names)
print(name2)
names[2]="何偉民"
names[3][0]="Jack"

print(names)
print(name2)

4.淺層複製的補充及引用(聯合賬號):

name2=names.copy()               #copy  淺層複製
name3=names[:]
names=list(names)               #工廠函式
person=["name",["saving moeny","100"]]
p1=person[:]
p2=person[:]
p1[0]="hero"
p2[0]="maria"
p1[1][1]=50     #修改金額
print(p1)
print(p2)

列表相關操作補充:

#更新列表

二、元組(tuple):

          元組其實和列表差不多,也是存一組數,只不過一旦建立,便不能再修改,所以又叫只讀列表。

          語法:names = (“jack”,"jack","eric")

           它只有兩個方法,一個是count,一個是index()。

1、Tuple 與 list 的相同之處:


      定義 tuple 與定義 list 的方式相同, 除了整個元素集是用小括號包圍的而不是方括號。
      Tuple 的元素與 list 一樣按定義的次序進行排序。 Tuples 的索引與 list 一樣從 0 開始, 所以一個非空 tuple 的第一個元素總是 t[0]。
       負數索引與 list 一樣從 tuple 的尾部開始計數。
      與 list 一樣分片 (slice) 也可以使用。注意當分割一個 list 時, 會得到一個新的 list ;當分割一個 tuple 時, 會得到一個新的 tuple。

2、tuple的優點:
      Tuple 比 list 操作速度快。如果您定義了一個值的常量集,並且唯一要用它做的是不斷地遍歷它,請使用 tuple 代替 list。

三、tuple與list之間的轉換:

         Tuple 可以轉換成 list,反之亦然。內建的tuple()函式接收一個 列表引數,並返回一個有著相同元素的 元組 tuple。而 list() 函式接收一個 元組引數返回一個 list。從效果上看,tuple() 凍結列表,而 list 解凍一個元組。

例1:將a分錶轉換成列表和陣列

>>>a

(1,2,3,4)

>>>a=list(a)

[1,,2,3,4]

>>>a=tuple(a)

(1,2,3,4)

>>>

例2:列表和之間的相互轉化:

   2.1 list------->tuple :  

          list = [1,2,3,4]     #建立列表

          tuple(list)            #強制轉換

          print type(list)     # 檢視是否轉化成功

   2.2 tuple----->list:    

          tuple =(1,2,3,4)    #建立元組

          list(tuple)             # 強制轉換

          print  type(tuple)   #檢視是否轉換成功

Tuple 的其他應用
一次賦多值
>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v
解釋:v 是一個三元素的 tuple, 並且 (x, y, z) 是一個三變數的 tuple。將一個 tuple 賦值給另一個 tuple, 會按順序將 v  的每個值賦值給每個變數。