Python小知識(2)

來源:互聯網
上載者:User
1、遞迴

有一個list,如 L =  ['A', 'B', ['C', 'D', ['E']]],現在希望將其以如下格式列印在螢幕上(每多一層列表嵌套,則在其前面多列印4個空格)

A

B

    C

    D

        E

代碼如下

def print_lol(L, indents=4, flag=True):for x in L:if isinstance(x, list):print_lol(x, indents+4, flag)else:for i in range(indents-4):print(' ', end='')print(x)

2、函數的預設參數
def f(a, b=1, c=2, d=3, e='hello'):print('a = ' + str(a), end=', ')print('b = ' + str(b), end=', ')print('c = ' + str(c), end=', ')print('d = ' + str(d), end=', ')print('e = ' + e)f(100)f(100, 200)f(100,d=300)f(100, 'hi')

運行結果為

a = 100, b = 1, c = 2, d = 3, e = hello
a = 100, b = 200, c = 2, d = 3, e = hello
a = 100, b = 1, c = 2, d = 300, e = hello
a = 100, b = hi, c = 2, d = 3, e = hello

現在,我們來看一看BIF print函數的原型

print(value, sep=' ', end='\n', file=sys.stdout)

怎樣來將print的結果重新導向到檔案中,現在你應該知道了吧

3、Python中的排序
A = [1, 3, 5, 2, 4, 7,8, 6]B = [1, 3, 5, 2, 4, 7,8, 6]A.sort()print(A)print(sorted(B))print(B)

運行結果為

[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 3, 5, 2, 4, 7, 8, 6]可見,列表的sort方法為in-place sorting,而BIF sorted為copied sorting
這兩個排序方法的預設排序次序是升序,如果想改為降序,則傳入一個參數 reverse=True即可。4、檔案與字串相關操作現有一個檔案名稱為"D:\\360安全瀏覽器下載\\james.txt",裡面的內容如下:
2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-222.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-212:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:382:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

這是一些時間的記錄,現在想把每一個時間記錄轉為標準格式(hour:minute)並存入一個列表,然後將該列表按時間大小逆序輸出。

代碼如下
def sanitate(time_string):if '.' in time_string:  # 用關鍵字in來判斷某個字元是否在一個字串內splitter = '.'elif '-' in time_string:splitter = '-'else:return time_string(minute, second) =  time_string.split(splitter)return minute + ':' + secondresults = []# 建立一個listwith open('D:\\360安全瀏覽器下載\\james.txt') as data:for line in data:theList = line.strip().split(',')# strip不僅會去迴轉尾的空白,還會去掉\nfor item in theList:results.append(sanitate(item))for item in sorted(results):print(item)

5、List ComprehensionList Comprehension機制可以協助我們將一個List轉換為另一個List。通常我們在做轉換時,需要以下4個步驟:

  1. 建立一個List B;
  2. 迭代原List A中的每一個item;
  3. 在迭代每一個item時,對其進行處理;
  4. 將處理的結果append到B中
而使用List Comprehension方式,我們可以如下來自動完成清單轉換,只需一行代碼:B = [func(t) for t in A]例如
A = [1, 2, 3, 4]B = [m*100 for m in A]print(B)

結果為:[100,200,300,400]

再如:
A = ['aa','bb','CC','d']B = [m.upper() for m in A]  # upper方法用於將字串中的全部小寫字母變為大寫字母

上一節中的14~18行也可改為

with open('D:\\360安全瀏覽器下載\\james.txt') as data:for line in data:theList = line.strip().split(',')# strip不僅會去迴轉尾的空白,還會去掉\nresults.append([sanitate(x) for x in theList])

6、訪問數組元素

A = [0, 1, 2, 3, 4]print(A[0:3])# A[0:3]代表索引從0到2的子列表

運行輸出:
[0, 1, 2]

7、去除list中的重複元素

在第4例中,如果想將最終list中重複的元素刪除,且最後只輸出表中的前3個元素,該怎麼辦?

def sanitate(time_string):if '.' in time_string:  # 用關鍵字in來判斷某個字元是否在一個字串內splitter = '.'elif '-' in time_string:splitter = '-'else:return time_string(minute, second) =  time_string.split(splitter)return minute + ':' + secondresults = []# 建立一個listwith open('D:\\360安全瀏覽器下載\\james.txt') as data:for line in data:theList = line.strip().split(',')# strip不僅會去迴轉尾的空白,還會去掉\nfor item in theList:results.append(sanitate(item))finalResults = []for item in sorted(results):if not item in finalResults:finalResults.append(item)print(finalResults[0:3])

pop的用法

如果A是一個list,那麼A.pop()則返回並刪除A中的最後一個元素,A.pop(i)則返回並刪除A中的第i個元素

將一個list附在另一個list的後面

現有2個List(A和B),希望將B附在A的後面

A = [1, 2, 3]B = [4, 5, 6]C = ['A', 'B', 'C']A.extend(B)for x in C:A.append(x)print(A) # 輸出  [1, 2, 3, 4, 5, 6, 'A', 'B', 'C']

如果使用A.append(B),那麼輸出是

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

字典(dict結構)

A = {}  # 建立一個空的dictionaryB = dict()print(type(A))   # 輸出  <class 'dict'>print(type(B)) A['name'] = 'ccc'A['age'] = 24print(A)   # 輸出  {'age': 24, 'name': 'ccc'}A['name'] = 'xt'print(A)   # 輸出  {'age': 24, 'name': 'xt'}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.