Python全棧工程師(列表、拷貝)

 

                                    ParisGabriel
 
               感謝 你們的支持  大家的閱讀評價就是我最好的更新動力  我會堅持吧排版作的愈來愈好 
                                
 
                     



                     天天堅持 一天一篇 點個訂閱吧  灰常感謝    當個死粉也闊以
app

 

                          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)spa

[ ]內的參數表明能夠省略
    方法                        意義
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:可迭代對象3d

潛拷貝和深拷貝:code

潛拷貝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]]blog

  深拷貝一般只對可變對象進行復制 ,不可變對象一般不會複製(這裏深拷貝須要 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 = 1
b = 1
while True:
    a += b
    b += a
    L += [a, b]
    if len(L) > 38:
        break
print(L)
方法二
L = [1, 1]
a = 1
b = 0
i = 0
while 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]
將列表中出現的重複數字存入另外一個列表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 = 0
while 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人工智能從入門到精通

 

 

加油!

相關文章
相關標籤/搜索