列表基本操作&內建方法
阿新 • • 發佈:2021-11-08
列表基本操作
列"表"來了
列表內一般都會儲存相同資料型別的資料
- list的型別轉換
資料型別關鍵字(需要轉換的資料)
print(list(123)) # 報錯 print(list(123.22)) # 報錯 print(list('hello')) # ['h','e','l','l','o'] print(list({'username':'jason', 'pwd':123})) # ['username', 'pwd'] # 只有key在列表當中 print(list((11, 22, 33))) # [11,22,33] print(list({11,22,33})) # [33,11,22] 無序 # list關鍵字可以將支援for迴圈的資料型別轉換成列表
列表內建方法
name_list = ['jason', 'jack', 'tony', 'duke']
print(name_list[1:3]) # 切片 ['jack', 'tony']
print(name_list[0:4:2]) # 步長 ['jason', 'tony']
print(name_list[-1:-4:-1]) # 反向切片 ['duke', 'tony', 'jack']
# 統計列表中元素的個數
print(len(name_list)) # 4
必須掌握的
- 增、改
1.修改值 name_list[0] = 'alvin' 2.新增值 # 1. append尾部追加元素(括號內的資料當成一個整體追加到列表末尾,) name_list.append('追加的') # 2. insert插入元素(括號內的資料當成一個整體插入到指定位置,) name_list.insert(0, '插入的') # 3. extend擴充套件元素(底層相當於for迴圈+append) name_list.extend([111,222,333,444])
- 刪除
方式一:del通用的刪除方式根據索引直接刪除
name_list = ['jason', 'jack', 'tony', 'duke']
del name_list[1]
方式二:remove()括號內指定需要移除的元素
name_list.remove('jason')
方式三:pop()彈出的值可以取到。
del_word = name_list.pop(1) # 根據索引彈出,彈出的值可以取到
print(del_word) # jack
name_list.pop() # 不寫引數預設彈出尾部引數
可變型別與不可變型別
可變型別:值改變 記憶體地址不變,修改的是原值
# 測試 集合
set1 = {1, 2, 3, 4}
print(id(set1), type(set1), set1)
set1.add(88)
print(id(set1), type(set1), set1)
"""
1637988509728 <class 'set'> {1, 2, 3, 4}
1637988509728 <class 'set'> {1, 2, 3, 4, 88}
"""
# 測試列表
lis1 = [1, 2, 3, 4]
print(id(lis1), type(lis1), lis1)
lis1.append(88)
print(id(lis1), type(lis1), lis1)
"""
2169931235008 <class 'list'> [1, 2, 3, 4]
2169931235008 <class 'list'> [1, 2, 3, 4, 88]
"""
以此類推,測試元組,
tup1 = (1, 2, 3, 4, [12, 34, 56])
print(id(tup1), type(tup1), tup1)
tup1[4].append(888)
print(id(tup1), type(tup1), tup1)
"""
2528056840816 <class 'tuple'> (1, 2, 3, 4, [12, 34, 56])
2528056840816 <class 'tuple'> (1, 2, 3, 4, [12, 34, 56, 888])
但是我們不能以此說明元組是可變型別,元組的定義就是不可變的,我們修改了元組中列表的值,
但是因為列表是可變資料型別,所以雖然在列表中更改了值,但是列表的地址沒有改變,列表在元組中的地址的值也就沒有改變,
所以也就意味著元組沒有發生變化。我們就可以認為元組是不可變資料型別,因為元組是不可變的。
"""
# 測試字典時,也會發現
tuple = (1)
d = { tuple:1,'key2':'djx','key3':'li'}
print(d,type(d),id(d))
d['key4'] = 'haha'
print(d,type(d),id(d))
"""
{<class 'tuple'>: 1, 'key2': 'djx', 'key3': 'li'} <class 'dict'> 2322053173952
{<class 'tuple'>: 1, 'key2': 'djx', 'key3': 'li', 'key4': 'haha'} <class 'dict'> 2322053173952
"""
據此我們可以知道:列表,集合,字典,是可變資料型別
不可變型別:值改變 記憶體地址肯定變,產生了新值
字串,整型,浮點型,元組,是不可變資料型別
佇列與堆疊 作業!!
佇列:FIFO 先進先出first in first out
堆疊:FILO 先進後出(疊衣服)
用列表及內建方法,模擬出上述兩個資料結構的特性
放幾個數,取幾個數,模擬佇列/堆疊的特性實現。
# 定義一個存放名字的空列表
name_list = []
while True:
name = input('請輸入您的名字(q/Q退出)>>>:').strip()
if name.upper() == 'Q':
break
# 向列表中追加輸入的名字
name_list.append(name)
# 佇列取值,直接for迴圈實現,先進先出
for i in name_list:
print(i)
# 堆疊取值,用步長實現列表倒敘取值,實現先進後出
for j in range(len(name_list)-1, -1, -1):
print(name_list[j])