詳解Python中的List
什么是list?
list 是一個(gè)序列!一串?dāng)?shù)據(jù),這個(gè)串可以追加數(shù)據(jù)。
我們可以把它看成大型商場(chǎng)內(nèi),兒童游玩串串車,它就像一趟一趟車廂一樣,可以掛上去(還能增加車廂)。
這樣tuple(元組)就是焊死了的串串車!
在數(shù)據(jù)結(jié)構(gòu)中,我們也學(xué)習(xí)過(guò)鏈表,某種程度上list就是python給出的一個(gè)實(shí)現(xiàn)。
它可以無(wú)限的存放數(shù)據(jù),并通過(guò)下標(biāo)(從0開(kāi)始計(jì)數(shù))獲取特定位置的元素。
說(shuō)這么多我們看看代碼,感受一下:
list_a = [1, 2, 3] list_b = ['hello','lei','學(xué)委', 666]
上面就是python中的list。
list 可以進(jìn)行哪些操作呢?
我們前面tuple試過(guò) + 和 *, 這些list能做嗎?
答案是肯定的。
這里學(xué)委復(fù)制了前面tuple的代碼進(jìn)行更改:
#!/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可以修改對(duì)應(yīng)下標(biāo)的值! a[0] = 22 mylist = list([a, [2, 3]]) print(mylist) ([22, 2, 3], [2, 3]) mylist[0][0] = 100 #這個(gè)可以!真可以! print(mylist) print(type(mylist))
動(dòng)態(tài)長(zhǎng)度參數(shù)傳遞
def show_info_v2(name, title, *info):
print("姓名為:", name)
print("職稱為:", title)
print("其他評(píng)價(jià):", info)
show_info_v2('雷學(xué)委', '搬磚大師', "熱愛(ài)技術(shù)", "熱愛(ài)生活")
參數(shù)是否會(huì)被函數(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)用計(jì)算函數(shù)v1之前:", _list)
print("調(diào)用計(jì)算函數(shù)v1之前內(nèi)存地址:", id(_list))
print(compute_v1(_list))
print("調(diào)用計(jì)算函數(shù)v1之后:", _list)
print("調(diào)用計(jì)算函數(shù)v1之后內(nèi)存地址:", id(_list))
_list = [1, 2, 3, 4, 5]
print("調(diào)用計(jì)算函數(shù)v2之前:", _list)
print("調(diào)用計(jì)算函數(shù)v2之前內(nèi)存地址:", id(_list))
print(compute_v2(_list))
print("調(diào)用計(jì)算函數(shù)v2之后:", _list)
print("調(diào)用計(jì)算函數(shù)v2之后內(nèi)存地址:", id(_list))
這是代碼運(yùn)行效果:

我們是可以修改list的元素的。
list 這種對(duì)象能執(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("三連開(kāi)光過(guò)的list:", new_list)
# new_list = list / 3 # 不支持下次一定??!
print("'666' in new_listle ? ", '666' in new_list)
下面是運(yùn)行效果:

可以看到,我們之前在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("加倍過(guò)的list:", new_list)
# 從這里開(kāi)始展示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 !")
說(shuō)這么多,好像漏了點(diǎn)啥?遍歷列表還沒(méi)有展示呢。
這個(gè)非常簡(jiǎn)單,隨手就來(lái)
list = [ 1, 2, 3]
for x in list:
do_on_value(x)
就這樣,其實(shí)上面的展示代碼涵蓋了,但是沒(méi)有特別說(shuō)出來(lái)。
就是這一句 ‘new_list = [x * 2 for x in mylist]' , 直接遍歷列表并把每個(gè)函數(shù)的值都x2生成的元素構(gòu)成新列表。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python之pexpect實(shí)現(xiàn)自動(dòng)交互的例子
今天小編就為大家分享一篇python之pexpect實(shí)現(xiàn)自動(dòng)交互的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python pickle模塊進(jìn)行序列化的實(shí)現(xiàn)示例
pickle模塊是一個(gè)用于實(shí)現(xiàn)數(shù)據(jù)序列化與反序列化的強(qiáng)大工具,本文就來(lái)介紹一下Python pickle模塊進(jìn)行序列化的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01
Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼
marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于對(duì)對(duì)象進(jìn)行序列化和反序列化,并同步進(jìn)行數(shù)據(jù)驗(yàn)證。這篇文章主要介紹了Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼,需要的朋友可以參考下2020-02-02
GDAL 矢量屬性數(shù)據(jù)修改方式(python)
這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
python中的split()函數(shù)和os.path.split()函數(shù)使用詳解
今天小編就為大家分享一篇python中的split()函數(shù)和os.path.split()函數(shù)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python實(shí)現(xiàn)給微信公眾號(hào)發(fā)送消息的方法
這篇文章主要介紹了python實(shí)現(xiàn)給微信公眾號(hào)發(fā)送消息的方法,結(jié)合實(shí)例形式分析了Python針對(duì)微信公眾號(hào)接口操作的相關(guān)技巧,需要的朋友可以參考下2017-06-06
Python 人工智能老照片修復(fù)算法學(xué)習(xí)
老舊或者破損的照片如何修復(fù)呢?本文主要介紹了一個(gè)非常不錯(cuò)的照片恢復(fù)開(kāi)源項(xiàng)目:Bringing-Old-Photos-Back-to-Life。感興趣的小伙伴快來(lái)看看呀2021-11-11

