標籤:inpu python index 就是 等於 可變對象 pytho 中間 閱讀
ParisGabriel 感謝 大家的支援 你們的閱讀評價就是我最好的更新動力 我會堅持吧排版做的越來越好
每天堅持 一天一篇 點個訂閱吧 灰常感謝 當個死粉也闊以
Python人工智慧從入門到精通
列表建立函數:
list(可迭代對象)
序列有5種:
star 字串
list 列表
tuple 元組
bytes 後面講
bytearray 後面講
序列運算子:
in 、 not in
>
>=
<
<=
+
*
列表的索引可以增加、刪除、修改、列表的元素值
切片賦值:
步長不等於1時切片賦值,賦值運算子的右側的可迭代對象提供的元素
的個數一定要等於切片切出的片數
del語句:
用於刪除列表的元素
del 列表 [索引]
del 列表 [切片]
Python3中常用的序列相關函數:
len(x) 返回序列的長度
max (x) 返回最大元素
min(x)返回序列最小元素
sum(x) 返回序列中所有原素的和
any(x)真值測試,如果列表中有一個值為真返回true
all(x) 真值測試,如果列表中所有值為真返回true
列表的方法(method):
help(list)
[ ]內的參數代表可以省略
方法 意義
L.index(v [, begin[, end]]) 返回對應元素的索引下標, begin:為開始索引,end:為結束索引,當 value 不存在時觸發ValueError錯誤
L.insert(index, obj) 將某個元素插放到列表中指定的位置 index:索引 obj:要插入的元素
L.count(x) 返回列表中元素的個數 x:元素
L.remove(x) 從列表中刪除第一次出現在列表中的值 x:元素(例如列表內有2個3 刪除第一個 依次進行)
L.copy() 複製此列表(只複製一層,不會複製深層對象)
L.append(x) 向列表中追加單個元素 可以追加可迭代對象元素
L.extend(list) 向列表追加另一個列表
L.clear() 清空列表,等同於 L[:] = []
L.sort(reverse=False) 將列表中的元素進行排序,預設順序按值的小到大的順序排列
L.reverse() 列表的反轉,用來改變原列表的先後順序
L.pop([index]) 刪除索引對應的元素,如果不加索引,預設刪除最後元素,同時返回刪除元素的參考關聯性(相當於取出元素不歸還,可以用變數來接受)
字串的文本解析方法:
S.split(sep=None) 將字串使用sep作為分隔字元分割字串,返回分隔後的字串列表,當不給定參數時,用空白字元作為分隔字元分隔
S.join(iterable) 用可迭代對象中的字串,返回一個中間用S分隔組合的字串 S=esp 要插入分割連結的字元 iterable:可迭代對象
潛拷貝和深拷貝:
潛拷貝shallow copy:
help(list.copy)
拷貝指在複製過程中,只複製一層變數,不會複製深成變數綁定的對象的複製過程
例如:
>>> 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 # 匯入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]]
深拷貝通常只對可變對象進行複製 ,不可變對象通常不會複製(這裡深拷貝需要 import copy中的deepcopy 後面講)
小結:
L1 = [1, 2, [3.1, 3.2]]
這裡只是純粹的調用關係 可以通過記憶體位址查看
L2 = L1 # 不拷貝 同時綁定一個對象
L3 = L1.copy() # 潛拷貝等同於 L3 = L1[:]
import copy
L4 = copy.deepcopy(L1) #深拷貝
列表推導式 list comprehension:
列表推導式是用可迭代對象產生列表的運算式
文法:
[運算式 for 變數 in 可迭代對象]
或
[運算式 for 變數 in 可迭代對象 if 真值運算式]
說明:
for in 運算式的 if 子句可以省略,省略後將對所有產生的對象進行求值處理
如:產生1~9的平方的列表
L= [x ** 2 for x in range(1,10)]
列表推到式的嵌套:
文法:
L=[運算式
for 變數1 in 可迭代對象1 if 真值運算式1
for 變數2 in 可迭代對象2 if 真值運算式2 ]
OK 今天的練習比較多 但是都很簡單 爭取把每個題都要理解他的原理 不懂得對照上面的參數進行核對一下就可以
想要入門IT就必須多寫多練 寫的代碼也多 你就越熟練 越熟練經驗越多 嘗試不同的思路去分析
什麼時候寫的想吐 什麼時候才算會了 我們一起加油
練習:
1.
已知有列表:
L = [3, 5]
1) 用索引和切片等操作,將原列表改變為:
L = [1, 2, 3, 4, 5, 6]
2) 將列表反轉,刪除最後一個元素後列印此列表
...
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. 寫程式,讓使用者輸入一些整數,當輸入-1時結束輸入,將這些數存於列表L中
1) 列印使用者共輸入了幾個數?
2) 列印您輸入的數的最大數是多少
3) 列印您輸入的數的最小數是多少
4) 列印您輸入的這些數的平均值是多少?
答案:
L = []while True: a = int(input("please input at will integer (input ‘-1‘ over):")) if a < 0: break L.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.已知有一個字串
s = “100, 200, 300, 500, 800”
將其轉換為整數的列表存於L列表中
答案:
s = "100,200,300,500,800"L = s.split(",")print(L)
2.產生前40個婓波那契數(fibonacci)
1 1 2 3 5 8 13 .....
要求將這些數字儲存在列表中
列印這些數
答案:
L = [1, 1]a = 1b = 1while True: a += b b += a L += [a, b] if len(L) > 38: breakprint(L)
方法二L = [1, 1]a = 1b = 0i = 0while i < 40: a = a + b b = a - b L.append(b) i += 1print(L)
4.
L= [1, 3, 2, 1, 6, 4, 2, ......98, 82]
將列表中出現的重複數字存入另一個列表L2中
要求:重複出現多次的數字在L2中只保留一份 (去重)
答案:
L = []while True: a = int(input("please input at will integer (input ‘-1‘ over):")) if a < 0: break L.append(a)L2 = []for x in L: if x not in L2: L2.append(x)print(L)print(L2)
5.
輸入多行文字,存入列表中,
每次輸入斷行符號後算一行
任意輸入多行,當輸入斷行符號(即輸入空行時結束輸入)
1) 按原輸入內容在螢幕上輸出內容
2) 列印出您共輸入了多少行文字
3) 列印出您共輸入了多少個字元
答案;
L = []i = 0while True: a = input("please input at will string direct Enter over:") if a == "": break i += len(a) L.append(a)for x in L: print(x)print("您共輸入的行數:", len(L))print("您共輸入的字元:", i)
6.
1. 有字串"hello"
請用此字串產生:
‘h e l l o‘ 和 ‘h-e-l-l-o‘
2. 寫一個程式,讓使用者輸入很多正整數,當輸入小於零的數時結束輸入,
1) 列印這些數中最大的一個數
2) 列印這些數中第二大的一個數
3) 刪除最小的一個數
4) 列印剩餘數的和
答案:
s = "heool"L = " ".join(s)print(L)L = "-".join(s)print(L)
7.
用列表推導式產生1~100內奇數的列表
結果是: [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.
產生一個數值為 1 ~ 9的平方的列表,去掉所有的奇數的平方
答案:
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人工智慧從入門到精通
加油!
ParisGabriel:Python全棧工程師(0基礎到精通)教程 第十一課