Python 列表List的定義及操作


#   列表概念:有序的可變的元素集合

#   定義
#   直接定義
nums = [1,2,3,4,5]

#   通過range函數構造,python2 和python3 版本之間的差異;
#   python3 用的時候才會去構造
nums = range(1,101)

#   列表嵌套
#   注意和C語言中數組的區別,是否可以存放不同的數據類型
nums = [1,2,"ab","1",True,["a","b","c"]]

#   列表賦值給另外一個列表
#   原始的方式
nums = [1,2,3,4,5]
resultList = []
for num in nums:
    resultList.append(num ** 2)
print(resultList)   # [1, 4, 9, 16, 25]

#   列表推導式
nums = [1,2,3,4,5]
#   [表達式 for 變量 in 列表]
resultList = [num ** 2 for num in nums]
print(resultList)   # [1, 4, 9, 16, 25]

#   [表達式 for 變量 in 列表 if 條件]
resultList = [num ** 2 for num in nums if num % 2 != 0]
print(resultList)   # [1, 9, 25]

#   列表的增,刪,改,插


#-------------------------------------增------------------------------------#
#     append
#         作用
#             往列表中, 追加一個新的元素
#             在列表的最后
#         語法
#             l.append(object)
#         參數
#             object
#                 想要添加的元素
#         返回值
#             None
#         注意
#             會直接修改原數組
nums = [1, 2, 3, 4]
nums.append(5) # 無返回值 none
print(nums) #   [1, 2, 3, 4, 5]

#     insert
#         作用
#             往列表中, 追加一個新的元素
#             在指定索引前面
#         語法
#             l.insert(index, object)
#         參數
#             index
#                 索引, 到時會插入到這個索引之前
#             object
#                 想要添加的元素
#         返回值
#             None
#         注意
#             會直接修改原數組
nums = [1, 2, 3, 4]
nums.insert(2, 5)
print(nums) #   [1, 2, 5, 3, 4]
#     extend
#         作用
#             往列表中, 擴展另外一個可迭代序列
#         語法
#             l.extend(iterable)
#         參數
#             iterable
#                 可迭代集合
#                     字符串
#                     列表
#                     元組
#                     ...
#         返回值
#             None
#         注意
#             會直接修改原數組
#             和append之間的區別
#                 extend可以算是兩個集合的拼接
#                 append是把一個元素, 追加到一個集合中
nums = [1, 2, 3, 4]
nums2 = ["a", "b", "c"]
nums.extend(nums2)
print(nums) #   [1, 2, 3, 4, 'a', 'b', 'c']

#     乘法運算
#         ["a"] * 3
#             =
#                 ['a', 'a', 'a']
nums = [1, 2]
print(nums * 2) #   [1, 2, 1, 2]

#     加法運算
#         ["a"] + ["b", "c"]
#             =
#                 ["a", "b", "c"]
#         和extend區別
#             只能列表類型和列表類型相加

n1 = [1, 2]
n2 = ["a", "b"]
n3 = ["abc", "cdf"]
print(n1 + n2); #[1, 2, 'a', 'b']
print(n1 + n3); #[1, 2, 'abc', 'cdf']

# ------------------------------------------刪------------------------------#
#     del 語句
#         作用
#             可以刪除一個指定元素(對象)
#         語法
#             del 指定元素
#         注意
#             可以刪除整個列表
#                 刪除一個變量
#             也可以刪除某個元素
nums = [1, 2, 3, 4]
del nums[1]
print(nums) #   [1, 3, 4]

#del nums #這樣也行
#print(nums)#程序會報錯

#     pop
#         作用
#             移除並返回列表中指定索引對應元素
#         語法
#             l.pop(index=-1)
#         參數
#             index
#                 需要被刪除返回的元素索引
#                 默認是-1
#                     也就對應着列表最后一個元素
#         返回值
#             被刪除的元素
#         注意
#             會直接修改原數組
#             注意索引越界
nums = [1, 2, 3, 4]
nums.pop() #默認-1
print(nums)


#     remove
#         作用
#             移除列表中指定元素
#         語法
#             l.remove(object)
#         參數
#             object
#                 需要被刪除的元素
#         返回值
#             None
#         注意
#             會直接修改原數組
#             如果元素不存在
#                 會報錯
#             若果存在多個元素
#                 則只會刪除最左邊一個
#             注意循環內刪除列表元素帶來的坑

nums = [1, 2, 2, 3, 4]
nums.remove(2) #則只會刪除最左邊一個
print(nums) #[1, 2, 3, 4]


# ---------------------------------------------改----------------------------------------#
#     names[index] = 666

nums = [1, 2, 3]
nums[1] = 5
print(nums) #[1, 5, 3]

#--------------------------------------------- 查----------------------------------------#
#     獲取單個元素
#         items[index]
#             注意負索引
nums = [1, 2, 3]
print(nums[-1]) # 3

#     獲取元素索引
#         index()
nums = [1, 2, 5, 3, 4]
print(nums.index(5))  # 2

#     獲取指定元素個數
#         count()
nums = [1, 2, 5, 2, 3, 4]
print(nums.count(2) ) #2

#     獲取多個元素
#         切片
#             items[start:end:step]
#     遍歷
#         方式1
#             根據元素進行遍歷
#                 for item in list:
#     print(item)
#         方式2
#             根據索引進行遍歷
#                 for index in range(len(list)):
#     print(index, list[index])
#         方式3(了解)
#             創建對應的枚舉對象
#                 概念
#                     通過枚舉函數, 生成的一個新的對象
#                 作用
#                     函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列
#                     同時列出數據下標和數據
#                 語法
#                     enumerate(sequence, [start=0])
#                             sequence -- 一個序列、迭代器或其他支持迭代對象。
#                             start -- 下標起始位置。
#                 舉例
#                     l = ["a", "b", "c"]
#                     enumerate(l, 1)
#                         一個待枚舉的對象
#                         轉換成為list之后, 具體數據如下
#                             [(1, 'a'), (2, 'b'), (3, 'c')]
#             遍歷枚舉對象
#                 for index, value in 枚舉對象:
#     print(index, value)
#         方式4(了解)
#             使用迭代器進行遍歷
#                 iterL = iter(list)
#                 for item in iterL:
#     print(item)


# 訪問集合的方式-迭代器
#     概念
#         迭代
#             是訪問集合元素的一種方式
#             按照某種順序逐個訪問集合中的每一項
#         可迭代對象
#             能夠被迭代的對象, 稱為可迭代對象
#             判定依據
#                 能作用於for in
#             判定方法
#                 import collections
#                 isinstance(obj, collections.Iterable)
#         迭代器
#             是可以記錄遍歷位置的對象
#             從第一個元素開始, 往后通過next()函數, 進行遍歷
#             只能往后, 不能往前
#             判定依據
#                 能作用於next()函數
#             判定方法
#                 import collections
#                 isinstance(obj, collections.Iterator)
#         注意
#             迭代器也是可迭代對象, 所以也可以作用於for in
#     為什么會產生迭代器?
#         1. 僅僅在迭代到某個元素時才處理該元素
#             在此之前, 元素可以不存在
#             在此之后, 元素可以被銷毀
#             特別適合用於遍歷一些巨大的或是無限的集合
#                 例如 "菲波那切數列"
#         2. 提供了一個統一的訪問集合的接口
#             可以把所有的可迭代對象, 轉換成迭代器進行使用
#             iter(Iterable)
#                 iter(str)
#                 iter(list)
#                 iter(tuple)
#                 iter(dict)
#                 ...
#     迭代器簡單使用
#         使用next()函數, 從迭代器中取出下一個對象, 從第1個元素開始
#         因為迭代器比較常用, 所以在Python中, 可以直接作用於for in
#             內部會自動調用迭代器對象的next()
#             會自動處理迭代完畢的錯誤
#     注意事項
#         如果取出完畢,再繼續取, 則會報錯
#             StopIteration
#         迭代器一般不能多次迭代

import collections

nums = [1, 2, 3]
result = isinstance(nums, collections.Iterable)
print(result)   # True
result = isinstance(nums, collections.Iterator)
print(result)   # Flase

#   轉為迭代器
it = iter(nums)

for v in it:
    print(v)

# 判定
#     元素 in  列表
#     元素 not in 列表


# 比較
#     cmp()
#         內建函數
#         如果比較的是列表, 則針對每個元素, 從左到右逐一比較
#             左 > 右
#                 1
#             左 == 右
#                 0
#             左 < 右
#                 -1
#         Python3.x不支持
#     比較運算符
#         ==
#         >
#         <
#         ...
#         針對每個元素, 從左到右逐一比較

# 排序
#     方式1
#         內建函數
#             可以對所有可迭代對象進行排序
#         語法
#             sorted(itrearble, key=None, reverse=False)
#         參數
#             itrearble
#                 可迭代對象
#             key
#                 排序關鍵字
#                 值為一個函數,此函數只有一個參數且返回一個值用來進行比較
#             reverse
#                 控制升序降序
#                 默認False
#                     升序
#         返回值
#             一個已經排好序的列表
#             列表類型
s = "cdefga"
result = sorted(s);
print(result)   #['a', 'c', 'd', 'e', 'f', 'g']

s = [2,3,1,4,5]
result = sorted(s, reverse = True)
print(result)   #[5, 4, 3, 2, 1]

s = [("a", 16), ("a1",13), ("a2", 14)]
result = sorted(s)
print(result) #[('a', 16), ('a1', 13), ('a2', 14)]

#按元組的第一個元素來排序
def getKey(x):
    return x[1]
result = sorted(s, key=getKey)
print(result)   #[('a1', 13), ('a2', 14), ('a', 16)]

#     方式2
#         列表對象方法
#         語法
#             list.sort(key=None, reverse=False)
#         參數
#             key
#                 排序關鍵字
#                 值為一個函數,此函數只有一個參數且返回一個值用來進行比較
#             reverse
#                 控制升序降序
#                 默認False
#                     升序

s = [2,3,1,4,5]
res = s.sort()
print(res, s) # None [1, 2, 3, 4, 5]    注意和內建函數的方法不同點;

# 亂序
#     可以隨機打亂一個列表
#         導入random模塊
#             import random
#         random.shuffle(list)

import random
list = [1, 2, 3, 4, 5]
res = random.shuffle(list)
print(res, list)    #None [4, 3, 5, 2, 1] 后面序列隨機,修改原序列的本身

# 反轉
#     l.reverse()
list = [1, 2, 3, 4, 5]
res = list.reverse()
print(res, list)    #None [5, 4, 3, 2, 1]

#     切片反轉
#         l[::-1]
list = [1, 2, 3, 4, 5]
res = list[::-1]
print(res, list) #[5, 4, 3, 2, 1] [1, 2, 3, 4, 5]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM