Python3高級基礎(1)

来源:https://www.cnblogs.com/brightyuxl/archive/2018/04/30/8974579.html
-Advertisement-
Play Games

[TOC] Introducing Python Object Types 對象類型的優勢 1. Built in objects make programs easy to write 2. Built in objects are components of extensions 3. Buil ...


[TOC]

Introducing Python Object Types

對象類型的優勢

  1. Built-in objects make programs easy to write
  2. Built-in objects are components of extensions
  3. Built-in objects are often more efficient than custom data structures
  4. Built-in objects are a standard part of the language

Python的核心數據類型

數字 = Number

123+222 #整數的加法
345
1.5 * 4 #浮點型的乘法
6.0
2**100 # 2的100次冪
1267650600228229401496703205376
len(str(2 ** 100))
31
3.1415*2
6.283
import math # 導入數學模塊
print('$\pi$的數值是:{}'.format(math.pi))
print('85的開方是:{}'.format(math.sqrt(85)))
$\pi$的數值是:3.141592653589793
85的開方是:9.219544457292887
import random
random.random()
0.6182188298420788

字元串

  • 序列操作
S = 'bright'
print('S的長度是: {}'.format(len(S)))
print('第1個元素: {}'.format(S[0]))
print('第2個元素: {}'.format(S[1]))
print('第3個元素: {}'.format(S[2]))
print('第4個元素: {}'.format(S[3]))
print('第5個元素: {}'.format(S[4]))
print('第6個元素: {}'.format(S[5]))
print('最後1個元素第一種求法: {}'.format(S[-1]))
print('最後1個元素第二種求法: {}'.format(S[len(S)-1]))
print('倒數第2個元素: {}'.format(S[-2]))
S的長度是: 6
第1個元素: b
第2個元素: r
第3個元素: i
第4個元素: g
第5個元素: h
第6個元素: t
最後1個元素第一種求法: t
最後1個元素第二種求法: t
倒數第2個元素: h
# 切片操作
print('Slice of S from offsets 1 through 2 (not 3): {}'.format(S[1:3]))
print('Everything past the first (1:len(S)): {}'.format(S[1:]))
print('S itself hasn\'t changed: {}'.format(S))
print('Everything but the last: {}'.format(S[0:6]))
print('Everything but the last again, but simpler (0:-1): {}'.format(S[:-1]))
print('Same as S[0:6]: {}'.format(S[:6]))
print('All of S as a top-level copy (0:len(S)): {}'.format(S[:]))
Slice of S from offsets 1 through 2 (not 3): ri
Everything past the first (1:len(S)): right
S itself hasn't changed: bright
Everything but the last: bright
Everything but the last again, but simpler (0:-1): brigh
Same as S[0:6]: bright
All of S as a top-level copy (0:len(S)): bright
# 字元串的加法與乘法
S1 = 'I'
S2 = ' like'
S3 = ' you! '
print('字元串的加法運算: {}'.format(S1+S2+S3))
print('字元串的乘法運算: {}'.format((S1+S2+S3)*3))
字元串的加法運算: I like you! 
字元串的乘法運算: I like you! I like you! I like you! 
  • 字元串的不可變形 = immutability
Str1 = 'Yuxl'
print(Str1)
try:
    Str1[0] = 'XX'
except:
    print("不可更改")
Yuxl
不可更改
  • We can run expressions to make new objects
print('Str1原來的形式: {}'.format(Str1))
Str1 = 'XX' + Str1[1:]
print('Str1修改後的形式: {}'.format(Str1))
Str1原來的形式: Yuxl
Str1修改後的形式: XXuxl
  • 字元串的類型方法
S = 'Spam'
# S.find()
print('Find the offset of a substring: {}'.format(S.find('pa')))
# S.replace(S中有的字元,定義字元替換原字元)
print('Replace occurrences of a substring with another: {}'.format(S.replace('pa','XYZ')))
print('替換後原字元串不變: {}'.format(S))
Find the offset of a substring: 1
Replace occurrences of a substring with another: SXYZm
替換後源字元串不變: Spam
line = 'aaa,bbb,ccccc,dd'
print('Split on a delimiter into a list of substrings: {}'.format(line.split(',')))
line1 = 'aaa,bbb,ccccc,dd\n'
print('列印原line1: {}'.format(line1))
print('Remove whitespace characters on the right side: {}'.format(line.rstrip()))
print('列印操作後的line1: {}'.format(line1))
print('-----------------------')
Split on a delimiter into a list of substrings: ['aaa', 'bbb', 'ccccc', 'dd']
列印原line1: aaa,bbb,ccccc,dd

Remove whitespace characters on the right side: aaa,bbb,ccccc,dd
列印操作後的line1: aaa,bbb,ccccc,dd

-----------------------
S = 'Bright'
print('Upper- and lowercase conversions: {}'.format(S.upper()))
print('Content tests: isalpha, isdigit, etc.: {}'.format(S.isalpha()))
Upper- and lowercase conversions: BRIGHT
Content tests: isalpha, isdigit, etc.: True
S = 'A\nB\tC' # \n is end-of-line, \t is tab
print(S)
A
B   C
len(S) #Each stands for just one character
5
print('\\n is a byte with the binary value 10 in ASCII: {}'.format(ord('\n')))
\n is a byte with the binary value 10 in ASCII: 10
S = 'A\oB\oC'
print(S)
len(S)
A\oB\oC





7
msg = """ aaaaaaaaaaaaa
bbb'''bbbbbbbbbb""bbbbbbb'bbbb
cccccccccccccc"""
print(msg)
 aaaaaaaaaaaaa
bbb'''bbbbbbbbbb""bbbbbbb'bbbb
cccccccccccccc
msg
' aaaaaaaaaaaaa\nbbb\'\'\'bbbbbbbbbb""bbbbbbb\'bbbb\ncccccccccccccc'
  • 模式匹配 = Pattern Matching
import re
match = re.match('Hello[ \t]*(.*)world', 'Hello    Python world')
match.group(1)
'Python '
match = re.match('/(.*)/(.*)/(.*)', '/usr/home/lumberjack')
match.groups()
('usr', 'home', 'lumberjack')

列表 = lists

  • 序列操作
L = [123,'spam',1.23]
print('Number of items in the list: {}'.format(len(L)))
print('Indexing by position: {}'.format(L[0]))
print('Slicing a list returns a new list: {}'.format(L[:-1]))
print('Concatenation makes a new list too: {}'.format(L+[4,5,6]))
print('We\'re not changing the original list: {}'.format(L))
Number of items in the list: 3
Indexing by position: 123
Slicing a list returns a new list: [123, 'spam']
Concatenation makes a new list too: [123, 'spam', 1.23, 4, 5, 6]
We're not changing the original list: [123, 'spam', 1.23]
  • 類型方法操作
L = [123,'spam',1.23]
print('Growing: add object at end of list: {}, 列表{}'.format(L.append('NI'),L))
print('Shrinking: delete an item in the middle: {}'.format(L.pop(2)))
print('"del L[2]" deletes from a list too: {}'.format(L))
M = ['bb','aa','cc']
print('M排序: {},{}'.format(M.sort(),M))
print('M元素翻轉: {},{}'.format(M.reverse(),M))
Growing: add object at end of list: None, 列表[123, 'spam', 1.23, 'NI']
Shrinking: delete an item in the middle: 1.23
"del L[2]" deletes from a list too: [123, 'spam', 'NI']
M排序: None,['aa', 'bb', 'cc']
M元素翻轉: None,['cc', 'bb', 'aa']
  • 列表嵌套 = nesting
M = [[1,2,3],
    [4,5,6],
    [7,8,9]]
print(M)
print('第2行: {}'.format(M[1]))
print('Get row 2, then get item 3 within the row: {}'.format(M[1][2]))
# 列表解析
col2 = [row[1] for row in M]
print('Collect the items in column 2: {}'.format(col2))
print('The matrix is unchanged: {}'.format(M))
print('Add 1 to each item in column 2: {}'.format([row[1]+1 for row in M]))
print('Filter out odd items: {}'.format([row[1] for row in M if row[1]%2==0]))
print('列印矩陣M: {}'.format(M))
diag = [M[i][i] for i in [0,1,2]]
print('Collect a diagonal from matrix: {}'.format(diag))
print('Repeat characters in a string: {}'.format([c*2 for c in 'bright']))
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
第2行: [4, 5, 6]
Get row 2, then get item 3 within the row: 6
Collect the items in column 2: [2, 5, 8]
The matrix is unchanged: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Add 1 to each item in column 2: [3, 6, 9]
Filter out odd items: [2, 8]
列印矩陣M: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Collect a diagonal from matrix: [1, 5, 9]
Repeat characters in a string: ['bb', 'rr', 'ii', 'gg', 'hh', 'tt']
print('列印M: {}'.format(M))
G = (sum(row) for row in M)
print('Create a generator of row sums: {}'.format(next(G)))
print('Run the iteration protocol: {}'.format(next(G)))
列印M: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Create a generator of row sums: 6
Run the iteration protocol: 15
print('Map sum over items in M: {}'.format(list(map(sum,M))))
print('Create a set of row sums: {}'.format({sum(row)for row in M}))
print('Creates key/value table of row sums: {}'.format({i : sum(M[i]) for i in range(3)}))
print('List of character ordinals: {}'.format([ord(x) for x in 'spaam']))
print('Sets remove duplicates: {}'.format({ord(x) for x in 'spaam'}))
print('Dictionary keys are unique: {}'.format({x:ord(x) for x in 'spaam'}))
Map sum over items in M: [6, 15, 24]
Create a set of row sums: {24, 6, 15}
Creates key/value table of row sums: {0: 6, 1: 15, 2: 24}
List of character ordinals: [115, 112, 97, 97, 109]
Sets remove duplicates: {112, 97, 115, 109}
Dictionary keys are unique: {'s': 115, 'p': 112, 'a': 97, 'm': 109}

字典 = dictionary

  • 映射操作
D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'}
print('Fetch value of key \'food\': {}'.format(D['food']))
print('Add 1 to \'quantity\' value: {},\n列印:{}'.format(D['quantity'] + 1 , D))
D = {}
# Create keys by assignment
D['Name']='bright'
D['Job']='student'
D['Style']='popular'
print('列印D: {}'.format(D))
print('列印D[\'name\']: {}'.format(D['Name']))
Fetch value of key 'food': Spam
Add 1 to 'quantity' value: 5,
列印:{'food': 'Spam', 'quantity': 4, 'color': 'pink'}
列印D: {'Name': 'bright', 'Job': 'student', 'Style': 'popular'}
列印D['name']: bright
  • 字典嵌套
rec = {'name': {'first': 'Bob', 'last': 'Smith'},
'job': ['dev', 'mgr'],
'age': 40.5}
print('列印rec的名字: {}'.format(rec['name']))
print('Index the nested dictionary: {}'.format(rec['name']['last']))
print('\'job\' is a nested list: {}'.format(rec['job']))
print('# Index the nested list: {}'.format(rec['job'][-1]))
print('Expand Bob\'s job description in-place: {}\n列印: {}'.
      format(rec['job'].append('janitor'),rec))
列印rec的名字: {'first': 'Bob', 'last': 'Smith'}
Index the nested dictionary: Smith
'job' is a nested list: ['dev', 'mgr']
# Index the nested list: mgr
Expand Bob's job description in-place: None
列印: {'name': {'first': 'Bob', 'last': 'Smith'}, 'job': ['dev', 'mgr', 'janitor'], 'age': 40.5}
  • 字典排序整理
D = {'a':1,'b':2,'c':3}
print('D: {}'.format(D))
print('Unordered keys list: {}'.format(list(D.keys())))
print('Sorted keys list: {}'.format((list(D.keys())).sort()))
for key in D.keys():
    print(key, '=>', D[key])
D: {'a': 1, 'b': 2, 'c': 3}
Unordered keys list: ['a', 'b', 'c']
Sorted keys list: None
a => 1
b => 2
c => 3
print(D)
for key in sorted(D):
    print(key, '=>', D[key])
{'a': 1, 'b': 2, 'c': 3}
a => 1
b => 2
c => 3
for c in 'bright':
    print(c.upper())
B
R
I
G
H
T
x = 4
while x>0:
    print('bright!'*x)
    x -= 1
bright!bright!bright!bright!
bright!bright!bright!
bright!bright!
bright!
  • 迭代和優化
squares = [x**2 for x in [1,2,3,4,5]]
print('列表解析: {}'.format(squares))

squares = []
for x in [1,2,3,4,5]:
    squares.append(x**2)
print('一般方法: {}'.format(squares))
列表解析: [1, 4, 9, 16, 25]
一般方法: [1, 4, 9, 16, 25]
  • 丟失鍵值
print('D: {}'.format(D))

D['e'] = 99 # # Assigning new keys grows dictionaries
print('D: {}'.format(D))

try:
    D['f'] ## Referencing a nonexistent key is an error
except:
    print('沒有f這個鍵')
    print('f' in D)
    if not 'f' in D:
        print('Missing')

value = D.get('x',0) # Index but with a default
print('value 1: {}'.format(value))

value = D['x'] if 'x' in D else 0 # if/else expression form
print('value 2: {}'.format(value))
D: {'a': 1, 'b': 2, 'c': 3}
D: {'a': 1, 'b': 2, 'c': 3, 'e': 99}
沒有f這個鍵
False
Missing
value 1: 0
value 2: 0

元組 = tuples

T = 1,2,3,4
print('Length: {}'.format(len(T)))
print('Concatenation: {}'.format(T+(5,6)))
print('the first element: {}'.format(T[0]))
print('Tuple methods: 4 appears at offset 3: {}'.format(T.index(4)))
print('# 4 appears once: {}'.format(T.count(4)))
T = ('spam', 3.0, [11,22,33])
print('T[1]: {}'.format(T[1]))
print('T[2][1]: {}'.format(T[2][1]))
Length: 4
Concatenation: (1, 2, 3, 4, 5, 6)
the first element: 1
Tuple methods: 4 appears at offset 3: 3
# 4 appears once: 1
T[1]: 3.0
T[2][1]: 22

文件 = file

f = open('data.txt', 'w')# Make a new file in output mode
f.write('Hello\n')# Write strings of bytes to it
f.write('world\n')# Returns number of bytes written in Python 3.0
f.close() # Close to flush output buffers to disk
f = open('data.txt')
text = f.read()
print(text)
print('file content is always a string: {}'.format(text.split()))
Hello
world

file content is always a string: ['Hello', 'world']

集合 = set

X = set('bright')
Y = {'b', 'r','t','a','z'}
X,Y
print('X,Y: {}'.format(X,Y))
print('X&Y: {}'.format(X&Y))
print('X|Y: {}'.format(X|Y))
print('X-Y: {}'.format(X-Y))
print('Set comprehensions in 3.0: {}'.format({x ** 2 for x in [1, 2, 3, 4]}))
X,Y: {'g', 'b', 't', 'h', 'i', 'r'}
X&Y: {'b', 't', 'r'}
X|Y: {'g', 'b', 't', 'h', 'a', 'i', 'z', 'r'}
X-Y: {'g', 'h', 'i'}
Set comprehensions in 3.0: {16, 1, 4, 9}

小數與分數

1/3
0.3333333333333333
2/3 + 1/2
1.1666666666666665
import decimal
d = decimal.Decimal('3.141')
print('d + 1 : {}'.format(d+1))
decimal.getcontext().prec = 2
print('固定精度後的值: {}'.format(decimal.Decimal('1.00')/decimal.Decimal('3.00')))
d + 1 : 4.141
固定精度後的值: 0.33
from fractions import Fraction
f = Fraction(2,3)
print('f+1: {}'.format(f + 1))
f + Fraction(1,2)
f+1: 5/3





Fraction(7, 6)

參考《Learing Python》改編


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 消息隊列是大型複雜系統解耦利器。本文根據應用廣泛的消息隊列RabbitMQ,介紹Spring Boot應用程式中隊列中間件的開發和應用。 一、RabbitMQ基礎 1、RabbitMQ簡介 RabbitMQ是Spring所在公司Pivotal自己的產品,是基於AMQP高級隊列協議的消息中間件,採用e ...
  • lesson Eleven 2018-04-30 22:34:59 多態性 1.多態性指的是什麼? 多態性,可以理解為一個事物的多種表現形態。 1.1方法的重載與重寫 1.2子類對像的多態性 2.子類對像的多態性使用的前提 2.1要有類的繼承 2.2要有子類對父類方法的重寫 3.程式運行分為編譯狀態 ...
  • 項目做前後端分離時,我們會經常提供Json數據給前端,如果有一個統一的Json格式返回工具類,那麼將大大提高開發效率和減低溝通成本。 ...
  • K近鄰演算法(KNN)是指一個樣本如果在特征空間中的K個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。即每個樣本都可以用它最接近的k個鄰居來代表。KNN演算法適合分類,也適合回歸。KNN演算法廣泛應用在推薦系統、語義搜索、異常檢測。 KNN演算法分類原理圖: 圖中 ...
  • shiro的過濾器也是不多的我們可以自定義的方法,它的繼承體系如下: 另外UserFilter是繼承於AccessControlFilter 1、NameableFilter NameableFilter給Filter起個名字,如果沒有設置預設就是FilterName;還記得之前的如authc嗎?當 ...
  • 文件格式 ①絕對路徑:從盤符開始,相同路徑必定是相同文件 ②相對路徑:不是從盤符開始,從當前文件夾下開始查找文件(相同路徑不易i的那個是相同文件) 訪問模式 說明 r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是預設模式。 w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件 ...
  • 一 寫在開頭 1.1 本文內容 C語言是一門古老而又高深莫測的編程語言,她身上總是閃爍著各種“巨坑”(對於我這種沒參透的菜鳥而言)。實踐出真知,親們在看C語言的資料時可千萬別想當然啊。 二 開始裝13 這是某本關於C語言指針的書中的一個小部分,具體書名不說了,內容如下圖所示。 我於是寫了一段代碼進行 ...
  • 網上關於PyQt5的教程很少,特別是界面跳轉這一塊兒,自己研究了半天,下來和大家分享一下 一、首先是主界面 二、跳轉界面Demo1 三、跳轉界面Demo2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...