python全栈工程师百科_Python全栈工程师(列表、拷贝)
ParisGabriel
感謝 大家的支持? 你們的閱讀評價(jià)就是我最好的更新動(dòng)力? 我會(huì)堅(jiān)持吧排版做的越來越好
每天堅(jiān)持 一天一篇 點(diǎn)個(gè)訂閱吧??灰常感謝? ? 當(dāng)個(gè)死粉也闊以
Python人工智能從入門到精通
列表創(chuàng)建函數(shù):
list(可迭代對象)
序列有5種:
star 字符串
list 列表
tuple 元組
bytes? ?后面講
bytearray? 后面講
序列運(yùn)算符:
in 、 not in
>
>=
<
<=
+
*
列表的索引可以增加、刪除、修改、列表的元素值
切片賦值:
步長不等于1時(shí)切片賦值,賦值運(yùn)算符的右側(cè)的可迭代對象提供的元素
的個(gè)數(shù)一定要等于切片切出的片數(shù)
del語句:
用于刪除列表的元素
del 列表 [索引]
del 列表 [切片]
Python3中常用的序列相關(guān)函數(shù):
len(x) 返回序列的長度
max (x) 返回最大元素
min(x)返回序列最小元素
sum(x) 返回序列中所有原素的和
any(x)真值測試,如果列表中有一個(gè)值為真返回true
all(x) 真值測試,如果列表中所有值為真返回true
列表的方法(method):
help(list)
[ ]內(nèi)的參數(shù)代表可以省略
方法 意義
L.index(v [, begin[, end]]) ?? 返回對應(yīng)元素的索引下標(biāo), begin:為開始索引,end:為結(jié)束索引,當(dāng) value 不存在時(shí)觸發(fā)ValueError錯(cuò)誤
L.insert(index, obj) 將某個(gè)元素插放到列表中指定的位置 index:索引 obj:要插入的元素
L.count(x) 返回列表中元素的個(gè)數(shù)x:元素
L.remove(x) 從列表中刪除第一次出現(xiàn)在列表中的值 x:元素(例如列表內(nèi)有2個(gè)3 刪除第一個(gè) 依次進(jìn)行)
L.copy() ? ?復(fù)制此列表(只復(fù)制一層,不會(huì)復(fù)制深層對象)
L.append(x) ??? 向列表中追加單個(gè)元素 可以追加可迭代對象元素
L.extend(list) ? ? 向列表追加另一個(gè)列表
L.clear() ? ?清空列表,等同于 L[:] = []
L.sort(reverse=False) ?? 將列表中的元素進(jìn)行排序,默認(rèn)順序按值的小到大的順序排列
L.reverse() ??? 列表的反轉(zhuǎn),用來改變原列表的先后順序
L.pop([index]) 刪除索引對應(yīng)的元素,如果不加索引,默認(rèn)刪除最后元素,同時(shí)返回刪除元素的引用關(guān)系(相當(dāng)于取出元素不歸還,可以用變量來接受)
字符串的文本解析方法:
S.split(sep=None) ? 將字符串使用sep作為分隔符分割字符串,返回分隔后的字符串列表,當(dāng)不給定參數(shù)時(shí),用空白字符作為分隔符分隔
S.join(iterable) 用可迭代對象中的字符串,返回一個(gè)中間用S分隔組合的字符串 S=esp 要插入分割鏈接的字符 iterable:可迭代對象
潛拷貝和深拷貝:
潛拷貝shallow copy:
help(list.copy)
拷貝指在復(fù)制過程中,只復(fù)制一層變量,不會(huì)復(fù)制深成變量綁定的對象的復(fù)制過程
例如:
>>> L = [3.1,3.2]>>> L1 = [1, 2, L]>>> L2 =L1.copy()>>>L1
[1, 2, [3.1, 3.2]]>>>L2
[1, 2, [3.1, 3.2]]>>> L2[2][0] = 3.14
>>>L1
[1, 2, [3.14, 3.2]]>>>L2
[1, 2, [3.14, 3.2]]
深拷貝 deep copy:
import copy # 導(dǎo)入copy 模塊
例如:
L = [3.1, 3.2]
L1 = [1, 2, L]
L2 = L1.deep copy()
L2[2][0] = 3.14
print(L1) #[1, 2, [3.1, 3.2]]
print(L2) #1, 2, [3.14, 3.2]]
深拷貝通常只對可變對象進(jìn)行復(fù)制 ,不可變對象通常不會(huì)復(fù)制(這里深拷貝需要 import copy中的deepcopy? 后面講)
小結(jié):
L1 = [1, 2, [3.1, 3.2]]
這里只是純粹的調(diào)用關(guān)系? 可以通過內(nèi)存地址查看
L2 = L1 # 不拷貝 同時(shí)綁定一個(gè)對象
L3 = L1.copy() # 潛拷貝等同于 L3 = L1[:]
import copy
L4 = copy.deepcopy(L1) #深拷貝
列表推導(dǎo)式 list comprehension:
列表推導(dǎo)式是用可迭代對象生成列表的表達(dá)式
語法:
[表達(dá)式 for 變量 in 可迭代對象]
或
[表達(dá)式 for 變量 in 可迭代對象 if 真值表達(dá)式]
說明:
for in 表達(dá)式的 if 子句可以省略,省略后將對所有生成的對象進(jìn)行求值處理
如:生成1~9的平方的列表
L= [x ** 2 for x in range(1,10)]
列表推到式的嵌套:
語法:
L=[表達(dá)式
for 變量1 in 可迭代對象1 if 真值表達(dá)式1
for 變量2 in 可迭代對象2 if 真值表達(dá)式2 ]
OK 今天的練習(xí)比較多 但是都很簡單? 爭取把每個(gè)題都要理解他的原理 不懂得對照上面的參數(shù)進(jìn)行核對一下就可以
想要入門IT就必須多寫多練 寫的代碼也多 你就越熟練? 越熟練經(jīng)驗(yàn)越多? 嘗試不同的思路去分析
什么時(shí)候?qū)懙南胪?什么時(shí)候才算會(huì)了? 我們一起加油
練習(xí):
1.
已知有列表:
L = [3, 5]
1) 用索引和切片等操作,將原列表改變?yōu)?
L = [1, 2, 3, 4, 5, 6]
2) 將列表反轉(zhuǎn),刪除最后一個(gè)元素后打印此列表
...
print(L) # [6, 5, 4, 3, 2]
答案:
L = [3, 5]
L[:]= range(1, 7)
L[::-1] = range(1, 7)#L[:] = [range(6, 0, -1)]
del L[-1]print(L)
2.
1. 寫程序,讓用戶輸入一些整數(shù),當(dāng)輸入-1時(shí)結(jié)束輸入,將這些數(shù)存于列表L中
1) 打印用戶共輸入了幾個(gè)數(shù)?
2) 打印您輸入的數(shù)的最大數(shù)是多少
3) 打印您輸入的數(shù)的最小數(shù)是多少
4) 打印您輸入的這些數(shù)的平均值是多少?
答案:
L =[]whileTrue:
a= int(input("please input at will integer (input '-1' over):"))if a <0:breakL.append(a)
L.sort()print("you input line number", len(L))print("top1:", L[-1])print("lower1:", L[0])print("average number :", sum(L) / len(L))
3.
1.已知有一個(gè)字符串
s = “100, 200, 300, 500, 800”
將其轉(zhuǎn)換為整數(shù)的列表存于L列表中
答案:
s = "100,200,300,500,800"L= s.split(",")print(L)
2.生成前40個(gè)婓波那契數(shù)(fibonacci)
1 1 2 3 5 8 13 .....
要求將這些數(shù)字保存在列表中
打印這些數(shù)
答案:
L = [1, 1]
a= 1b= 1
whileTrue:
a+=b
b+=a
L+=[a, b]if len(L) > 38:break
print(L)
方法二
L= [1, 1]
a= 1b=0
i=0while i < 40:
a= a +b
b= a -b
L.append(b)
i+= 1
print(L)
4.
L= [1, 3, 2, 1, 6, 4, 2, ......98, 82]
將列表中出現(xiàn)的重復(fù)數(shù)字存入另一個(gè)列表L2中
要求:重復(fù)出現(xiàn)多次的數(shù)字在L2中只保留一份 (去重)
答案:
L =[]whileTrue:
a= int(input("please input at will integer (input '-1' over):"))if a <0:breakL.append(a)
L2=[]for x inL:if x not inL2:
L2.append(x)print(L)print(L2)
5.
輸入多行文字,存入列表中,
每次輸入回車后算一行
任意輸入多行,當(dāng)輸入回車(即輸入空行時(shí)結(jié)束輸入)
1) 按原輸入內(nèi)容在屏幕上輸出內(nèi)容
2) 打印出您共輸入了多少行文字
3) 打印出您共輸入了多少個(gè)字符
答案;
L =[]
i=0whileTrue:
a= input("please input at will string direct Enter over:")if a == "":breaki+=len(a)
L.append(a)for x inL:print(x)print("您共輸入的行數(shù):", len(L))print("您共輸入的字符:", i)
6.
1. 有字符串"hello"
請用此字符串生成:
'h e l l o' 和 'h-e-l-l-o'
2. 寫一個(gè)程序,讓用戶輸入很多正整數(shù),當(dāng)輸入小于零的數(shù)時(shí)結(jié)束輸入,
1) 打印這些數(shù)中最大的一個(gè)數(shù)
2) 打印這些數(shù)中第二大的一個(gè)數(shù)
3) 刪除最小的一個(gè)數(shù)
4) 打印剩余數(shù)的和
答案:
s = "heool"L= " ".join(s)print(L)
L= "-".join(s)print(L)
7.
用列表推導(dǎo)式生成1~100內(nèi)奇數(shù)的列表
結(jié)果是: [1, 3, 5, 7, ..... 99]
答案:
L = [x for x in range(1, 100, 2)]print(L)
L = [x for x in range(1, 100) if x % 2 !=0]print(L)
8.
生成一個(gè)數(shù)值為 1 ~ 9的平方的列表,去掉所有的奇數(shù)的平方
答案:
L = [x**2 for x in range(2, 10, 2)]print(L)
L = [x**2 for x in range(2, 10) if x % 2 ==0]print(L)
Python人工智能從入門到精通
加油!
總結(jié)
以上是生活随笔為你收集整理的python全栈工程师百科_Python全栈工程师(列表、拷贝)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杂志订阅管理系统c++_电池管理系统BM
- 下一篇: python实现函数ifodd_09-P