詳解Python中的List
什么是list?
list 是一個序列!一串?dāng)?shù)據(jù),這個串可以追加數(shù)據(jù)。
我們可以把它看成大型商場內(nèi),兒童游玩串串車,它就像一趟一趟車廂一樣,可以掛上去(還能增加車廂)。
這樣tuple(元組)就是焊死了的串串車!
在數(shù)據(jù)結(jié)構(gòu)中,我們也學(xué)習(xí)過鏈表,某種程度上list就是python給出的一個實現(xiàn)。
它可以無限的存放數(shù)據(jù),并通過下標(從0開始計數(shù))獲取特定位置的元素。
說這么多我們看看代碼,感受一下:
list_a = [1, 2, 3] list_b = ['hello','lei','學(xué)委', 666]
上面就是python中的list。
list 可以進行哪些操作呢?
我們前面tuple試過 + 和 *, 這些list能做嗎?
答案是肯定的。
這里學(xué)委復(fù)制了前面tuple的代碼進行更改:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : list_demo.py # @Project : hello a = [1, 2, 3] print(a[0]) t = list(a) print(t[0:2]) print(type(t[0:2])) # <class 'list'> t[0] = 22 # list可以修改對應(yīng)下標的值! a[0] = 22 mylist = list([a, [2, 3]]) print(mylist) ([22, 2, 3], [2, 3]) mylist[0][0] = 100 #這個可以!真可以! print(mylist) print(type(mylist))
動態(tài)長度參數(shù)傳遞
def show_info_v2(name, title, *info): print("姓名為:", name) print("職稱為:", title) print("其他評價:", info) show_info_v2('雷學(xué)委', '搬磚大師', "熱愛技術(shù)", "熱愛生活")
參數(shù)是否會被函數(shù)攥改?
我們看看下面的程序即可:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/24 11:39 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : func_call.py # @Project : hello def compute_v1(list): sum = 0 for x in list: sum += x list = list + [sum] print("新地址:", id(list)) return sum def compute_v2(list): sum = 0 for x in list: sum += x list[0] = list[0] * 100 return sum _list = [1, 2, 3, 4, 5] print("調(diào)用計算函數(shù)v1之前:", _list) print("調(diào)用計算函數(shù)v1之前內(nèi)存地址:", id(_list)) print(compute_v1(_list)) print("調(diào)用計算函數(shù)v1之后:", _list) print("調(diào)用計算函數(shù)v1之后內(nèi)存地址:", id(_list)) _list = [1, 2, 3, 4, 5] print("調(diào)用計算函數(shù)v2之前:", _list) print("調(diào)用計算函數(shù)v2之前內(nèi)存地址:", id(_list)) print(compute_v2(_list)) print("調(diào)用計算函數(shù)v2之后:", _list) print("調(diào)用計算函數(shù)v2之后內(nèi)存地址:", id(_list))
這是代碼運行效果:
我們是可以修改list的元素的。
list 這種對象能執(zhí)行啥操作?
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : list_demo2.py # @Project : hello list = [3, 3, 3] # new_list = list - list #TypeError: unsupported operand type(s) for -: 'listle' and 'listle' new_list = list + list print(new_list) # 學(xué)委還是很喜歡三連的,666 new_list = list * 3 print("三連開光過的list:", new_list) # new_list = list / 3 # 不支持下次一定?。? print("'666' in new_listle ? ", '666' in new_list)
下面是運行效果:
可以看到,我們之前在tuple中的操作list也一一支持了。
tuple 轉(zhuǎn)list
直接上代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/31 10:36 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : list_demo2.py # @Project : hello mylist = [3, 3, 3] new_list = [x * 2 for x in mylist] print("加倍過的list:", new_list) # 從這里開始展示tuple 轉(zhuǎn)list tup = (6, 6, 6) new_list = list(tup) print("把list轉(zhuǎn)list: ", new_list) if 6 in new_list: print("new_list has 6 !")
說這么多,好像漏了點啥?遍歷列表還沒有展示呢。
這個非常簡單,隨手就來
list = [ 1, 2, 3] for x in list: do_on_value(x)
就這樣,其實上面的展示代碼涵蓋了,但是沒有特別說出來。
就是這一句 ‘new_list = [x * 2 for x in mylist]
' , 直接遍歷列表并把每個函數(shù)的值都x2生成的元素構(gòu)成新列表。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇
OpenCV是計算機視覺領(lǐng)域一個圖像和視頻處理庫,用于各種圖像和視頻分析,如面部識別和檢測,車牌閱讀,照片編輯,高級機器人視覺,光學(xué)字符識別等等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇的相關(guān)資料,需要的朋友可以參考下2022-11-11Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過Matplotlib創(chuàng)建散點圖實例,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12OpenCV實現(xiàn)去除背景識別的方法總結(jié)
這篇文章主要為大家詳細介紹了如何利用OpenCV實現(xiàn)去除背景識別的功能,文中為大家總結(jié)了一些方法,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下2022-10-10