python列表对象相同_Python中的学习列表对象,List
List(列表) 是 Python 中使用最頻繁的數(shù)據(jù)類型。
列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)。列表中元素的類型可以不相同,它支持?jǐn)?shù)字,字符串甚至可以包含列表(所謂嵌套)。
列表是寫在方括號 [ ] 之間、用逗號分隔開的元素列表。
和字符串一樣,列表同樣可以被索引和截取,列表被截取后返回一個(gè)包含所需元素的新列表。
列表(list)作為 Python 中最常用的數(shù)據(jù)類型之一,是一個(gè)可增加、刪除元素的可變?nèi)萜鳌?/p>
創(chuàng)建List
list1 = [] # 創(chuàng)建空的list
list2 = [1,'這是list集合',29.5,'121212']
list3 = [2,'abc',[1,2,3]]
基本操作
求 List 內(nèi)元素的個(gè)數(shù)
len(list1) # 0
len(list2) # 4
len(list3) # 3
遍歷 List 列表
for _ in list3:
print(f'{_}的類型為{type(_)}')
取出元素
print(list2[1])
增加元素
list3.append([2,4,6])
print(list3)
append 默認(rèn)增加到 列表尾部。
在指定位置插入元素
list2.insert(2,[2,2,2,2])
print(list2);
在 list2 列表的索引為 2 的地方,插入一個(gè)另一個(gè)列表元素。
移除列表尾部元素
temp = list2.pop()
print(temp)
pop 方法返回的是 移除的那個(gè)元素本身。
移除指定元素
list2.remove('121212')
print(list2)
pop 只能移除列表尾部元素,要想移除其他元素,可以使用remove 方法。
深、淺拷貝
淺拷貝
首先定義有個(gè)列表,拿出其中的列表元素。
list1 = ['001','2019-11-11',['薇恩','烏茲']]
list2 = list1[2]
然后對 list2 進(jìn)行修改,打印列表1 和列表2的值。
list2[1] = 'UZI'
print(list1)
print(list2)
發(fā)現(xiàn) list1 中的元素也對應(yīng)改變了,因?yàn)?list2 引用 list1 的第三個(gè)元素,所以 list1 也會(huì)相應(yīng)改變。
如果不想改變 list1 的第三個(gè)元素,就需要復(fù)制出 list1 的這個(gè)元素:
list1 = ['001','2019-11-11',['薇恩','烏茲']]
list2_deep = list1[2].copy()
list2_deep[1] = 'UZI'
print(list1)
print(list2_deep)
此時(shí),再對 list2_deep 操作,便不會(huì)影響 list1[2] 的值。
注意:
copy 函數(shù),僅僅實(shí)現(xiàn)對內(nèi)嵌對象的一層拷貝,屬于 shallow copy(淺拷貝)
深拷貝
先看下面的代碼
list = [1,2,[3,4,5]]
new_list = list.copy()
new_list[0] = 10
new_list[2][1] = 40
修改后,分別測試兩個(gè)值的相等性。
print(list[0] == new_list[0]) // False
print(list[2][1] == new_list[2][1]) // True
第一個(gè)輸出 False,證明實(shí)現(xiàn)了拷貝。
第二個(gè)輸出 True,證明是淺拷貝,不是深拷貝。copy 只完成了一層 copy。
要想實(shí)現(xiàn)深拷貝,需要使用 copy 模塊的 deepcopy 函數(shù):
from copy import deepcopy
list = [1,2,[3,4,5]]
new_list = deepcopy(list)
new_list[0] = 10
new_list[2][1] = 40
print(list[0] == new_list[0]) // False
print(list[2][1] == new_list[2][1]) // False
打印結(jié)果,都為 False,證明內(nèi)嵌的 List 列表也完成了復(fù)制。
切片
Java 和 C++ 中,訪問數(shù)組中的元素只能一次一個(gè),但 Python 增加切片功能為訪問列表帶來極大便利。利用內(nèi)置函數(shù) range(start,stop,step) 生成序列數(shù)據(jù),并轉(zhuǎn)為 List 類型。
a = list(range(1,20,3))
print(a)
# 輸出結(jié)果:
[1, 4, 7, 10, 13, 16, 19]
a[:3] 獲取列表 a 的前三個(gè)元素,返回: [1, 4, 7]
a[-1] 獲取 a 的最后一個(gè)元素,返回: 19
a[:-1] 獲取除最后一個(gè)元素的切片,返回: [1, 4, 7, 10, 13, 16]
a[1:5] 生成索引為 [1,5)(不包括索引 5),返回: [4, 7, 10, 13]
a[1:5:2] 生成索引 [1,5) ,步長為 2,返回: [4, 10]
a[::3] 生成索引 [0,len(a)) 步長為 3,返回: [1, 10, 19]
a[::-3] 生成逆向索引 [len(a),0) 步長為 3,返回: [19, 10, 1]
逆向:從列表最后一個(gè)元素訪問到第一個(gè)元素的方向。
逆向列表:
首先定義函數(shù)
def reverse(list):
return list[::-1]
調(diào)用函數(shù)
ra = reverse(a)
print(ra)
# 輸出結(jié)果
[19, 16, 13, 10, 7, 4, 1]
總結(jié)
以上是生活随笔為你收集整理的python列表对象相同_Python中的学习列表对象,List的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql倍增表的内容_MySQL入门(
- 下一篇: python怎么处理文字_使用pytho