python學習記錄(二)

  • 列表、元組、字符串(016)

list([iterable]) 把可迭代對象轉換爲列表

tuple([iterable]) 把可迭代對象轉換爲元組

str(obj) 把對象轉換爲字符串

迭代:重複反饋過程的活動 每次迭代的結果會作爲下次迭代的參數

b='盧本偉牛逼'
b=list(b)
print(b)

['盧', '本', '偉', '牛', '逼']

b=(1,2,3,4,5,6,2)
b=list(b)
print(b)

[1, 2, 3, 4, 5, 6, 2]

len()返回長度

max()返回參數中的最大值 min() 最小 但要保證數據類型統一

sum(iterable[,start=0]) 返回序列iterable和可選參數start的總和

b=(1,2,3,4,5,6,2)
print(sum(b))
print(sum(b,12))
~~~~~~~~~~~~~~~~~~~~~
23
35

sorted(numbers) 從小到大排序

b=(1,2,3,4,5,6,2)
print(sorted(b))
~~~~~~~~~~~~~~~~
[1, 2, 2, 3, 4, 5, 6]

reversed()返回一個反轉的迭代器

b=(1,2,3,4,5,6,2)
print(reversed(b))
print(list(reversed(b)))
~~~~~~~~~~~~~~~~~
<reversed object at 0x0000029B1E1EFBB0>
[2, 6, 5, 4, 3, 2, 1]

enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。

enumerate(sequence, [start=0]) 
  • sequence -- 一個序列、迭代器或其他支持迭代對象。
  • start -- 下標起始位置。

利用enumerate返回的位置來縮短for循環

b=(1,2,3,4,5,6,2)
print(list(enumerate(b)))
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 2)]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>i = 0
>>>seq = ['one', 'two', 'three']
>>>for element in seq:
...    print(i, seq[i])
...    i += 1
~~~~~~~~~~~~~~
0 one
1 two
2 three

>>>seq = ['one', 'two', 'three']
>>>for i, element in enumerate(seq):
...    print(i, seq[i])
~~~~~~~~~~~~~~~~~~~~~~~
0 one
1 two
2 three

 zip(a,b) 從左開始,兩兩一組,長度與最短的一致

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一個對象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 轉換爲列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
 
>>> a1, a2 = zip(*zip(a,b))          # 與 zip 相反,zip(*) 可理解爲解壓,返回二維矩陣式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>
  • 函數

收集參數 可能寫之前也不知道需要多少個參數

def idontknow(*params):
    print('參數的長度是:',len(params));
    print('第二第三個參數分別是',params[1],'+',params[2])

idontknow(1,2,'盧本偉',3.14,557)   
~~~~~~~~~~~~~~~~~~~~~~~~
參數的長度是: 5
第二第三個參數分別是 2 + 盧本偉

 

 閉包

def FunX(x):
    def FunY(y):
        return x*y
    return FunY

i=FunX(8)
print(FunX(8))
print(i)              #可看出i和FunX(8)一樣
print(FunX(8)(5))    
print(i(5))
~~~~~~~~~~~~~
<function FunX.<locals>.FunY at 0x0000024629A74280>
<function FunX.<locals>.FunY at 0x0000024629A741F0>
40
40
~~~~~~~~~~~~~~~~

強制轉換爲非局部變量

filter() 函數用於過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象,如果要轉換爲列表,可以使用 list() 來轉換。

該接收兩個參數,第一個爲函數,第二個爲序列,序列的每個元素作爲參數傳遞給函數進行判,然後返回 True 或 False,最後將返回 True 的元素放到新列表中。

print(list(filter(  x % 2, range(10) )))
報錯 x沒有定義
print(list(filter(lambda x : x % 2, range(10) )))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[1, 3, 5, 7, 9]

 

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 6993
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章