Python基礎 04----列表

Say_it_again發表於2020-12-27

列表的使用

格式為 [元素1, 元素2, 元素3, …]

# 多個資料需要按照一定順序要儲存的時候,可以考慮用列表

# [] 表示一個列表
names = ['張三', '李四', '王五']
# 使用list 內建類  list(可迭代物件)
# 例如
# a = list(('張三', '李四', '王五'))
# print(a)

# 和字串一樣,可以使用下標來獲取列表裡面的元素
# 可以使用下標來修改 列表裡面的元素
# 列表是可修改的
print(names[2])
names[2] = 'jack'
print(names[2])

# 使用下標來進行切片
print(names[1:2])

列表的增刪改查

列表的操作,有序 可變的
增加 刪除 修改 查詢
增刪改查

append 把新元素新增到列表的末尾

hero = ['李白', '韓信', '後裔', '李元芳']

# 新增元素的方法
# append insert extend
# append 在列表的最後面追加一個資料
hero.append('趙雲')
print(hero)

insert 在指定位置 index前插入元素object

# insert(index, object) 需要兩個引數
# index 表示下標,在那個位置插入資料
# object 表示插入的資料
hero.insert(2, '王昭君')
print(hero)

extend 將另一個列表逐一新增到列表中

# extend(iterable) 需要一個可迭代物件
# a.extend(b) 把b新增到a裡面  b不變
a = ['馬克菠蘿', '狄仁傑']
hero.extend(a)
print(hero)
print(a)

刪除資料的方法 pop remove clear

masters = ['王昭君', '妲己', '小喬', '貂蟬', '西施']

# 刪除 修改 查詢

# 刪除資料的方法 pop remove clear

# pop 預設會刪除列表的最後一個資料,並且返回資料
# pop(index) 傳入索引 index 用來刪除指定位置上的資料
# x = masters.pop(2)
# print(x)
# print(masters)

# remove  如果資料在列表中不存在 會報錯
masters.remove('王昭君')
print(masters)

# clear 用來清空一個列表
masters.clear()
print(masters)

# 使用 del 也可以刪除

tanks = ['亞瑟', '程咬金', '盾山', '張飛', '廉頗','廉頗']
# 查詢相關的方法  index  元素不存在報錯
print(tanks.index('盾山'))
# print(tanks.index('莊周'))
print(tanks.count('廉頗'))

# in 運算子

print('莊周' in tanks)

# 修改元素
# 使用下標直接修改列表的元素

排序(sort, reverse)

nums = [6, 5, 8, 7, 3, 1, 2, 4]

# 排序和反轉
# 呼叫列表的sort方法直接進行排序
# 直接對列表進行排序
# nums.sort()
nums.sort(reverse=True)  # 反轉
print(nums)

# sorted 不對原有列表進行改變,生成一個新的原有資料
a = sorted(nums)
print(a)

# 使用內建函式 reverse
name = ['李四', '王五', '張三']
name.reverse()
print(name)
# 使用切片[::-1]
c = name[::-1]
print(c)

列表的遍歷

使用while/for in

# 將所有的資料訪問一邊 遍歷針對的是 可迭代物件

# while / for in
killers = ['李白', '蘭陵王', '韓信', '孫悟空', '趙雲']

# for...in 迴圈是不斷的呼叫迭代器 next查詢下一個資料
for k in killers:
    print(k)

i = 0
while i < len(killers):
    print(killers[i])
    i += 1

列表的巢狀

關鍵: 操作巢狀列表,只要把要操作的元素的下標當作變數名來使用即可

import random

teachers = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
rooms = [[], [], []]
for teacher in teachers:
    room = random.choice(rooms)
    room.append(teacher)
print(rooms)

列表的推導式

關鍵點:使用簡單的語法建立列表

# 使用簡單的語法建立列表
# nums = [i for i in range(10)]
# print(nums)
#
# # 取所有的偶數
# x = [i for i in range(10) if i % 2 == 0]
# print(x)

# points = [(x,y) for x in range(10) for y in range(10)]
# print(points)
# 生成1到100的數字
m = [i for i in range(1, 101)]
n = [m[j: j + 3] for j in range(0, 100,3)]
print(m)
print(n)

列表的複製

列表裡的copy方法

本質上是將原來的列表進行復制,變成新的列表(淺複製),修改新列表的資料並不會影響到原來的資料

import copy

x = [100, 200, 300]
y = x  # x賦值給y,這個時候x,y指向同一個記憶體地址

# 使用記憶體空間不一樣的  使用 copy 內容一樣,指向的空間不一樣
z = x.copy()
print(z)
print(id(x))
'''
[100, 200, 300]
2516632011136
2516630953344
'''
print(id(z))

# 使用Python的方法
a = copy.copy(x)  # 相當於淺拷貝
b = x.copy()
print(a)
print(b)

copy模組的使用

淺拷貝:對一個物件的頂層拷貝,本質上是拷貝了引用,沒有拷貝內容
淺拷貝只會拷貝最外層的物件,裡面的資料不會拷貝,而是直接指向

import copy

words = ['hello', 'happy', 'hey', [100, 200, 300], 'hi']

# 淺拷貝  淺拷貝認為只拷貝了一層

words1 = words.copy()
print(words1)
# 深拷貝
words2 = copy.deepcopy(words)
print(words2)

深拷貝:深拷貝是對於一個物件所有層次的遞迴拷貝

相關文章