Python 3.7.1 官方文件 總結
Python 3.7.1
- 1.一些概念
- 2.小用法
- 3.資料結構
- 3.1 字串
- 3.2 列表
- 3.2.1 列表方法
- list.append(x)
- list.extend(L)
- list.insert(i, x)
- list.remove(x)
- list.pop([i])
- list.clear()
- list.index(x)
- list.count(x)
- list.sort(key=None, reverse=False)
- list.reverse()
- list.copy()
- 3.2.2 用途
- 3.3 元組
- 3.4 集合
- 3.5 字典
- 3.6 總結
- 4.控制流程
- 5.函式
- 6.模組和包
- 7.檔案
- 8.異常
- 9.類
目的: 針對有些python基礎,但是又沒看過(或者不想看)官方文件的同學。我把其中比較重要和有用的部分摘出來,你可以瀏覽一遍。
1.一些概念
- 計算機不能直接理解任何除機器語言以外的語言,所以必須要把程式設計師所寫的程式語言翻譯成機器語言,計算機才能執行程式。將其他語言翻譯成機器語言的工具,被稱為編譯器。編譯器翻譯的方式有兩種:一個是編譯,一個是解釋。
- python 是非常高階語言,Python 是一門解釋性的語言,Python是可擴充套件的
- Python原始檔預設以UTF-8編碼。
2.小用法
- 可以在 #!行之後再增加一個特殊註釋行來定義檔案的編碼
例如:# -*- coding: utf-8 -*-
(必須在第一行指定,除非第一行使用了#!/usr/bin/env python3
) - 要做 floor 除法 並且得到一個整數結果(返回商的整數部分) 可以使用 // 運算子;要計算餘數可以使用 %:同時獲取兩者可以使用divmod(x,y)
x = 17
y = 3
print(x//y) #結果是5
print(x%3) #結果是2
print(divmod(x,y)) #結果是(5, 2)
- 通過Python,可以使用
**
做n次方運算:
>>>5 ** 2 # 結果是25
- 同時混合的數型的運算將使結果由整數轉換為浮點數︰
>>>7.0 / 2 # 結果是3.5
- 在互動模式下,最後輸出的表示式會被賦值給變數
_
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
- 當遍歷一個序列時,使用
enumerate()
函式可以同時得到位置索引和對應的值。
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
0 tic
1 tac
2 toe
- 同時遍歷兩個或更多的序列,使用
zip()
函式可以成對讀取元素。
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
... print('What is your {0}? It is {1}.'.format(q, a))
...
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
2.1 迭代器:
(1)迭代器的用法在 Python 中普遍而且統一。在後臺,for語句呼叫容器物件的iter()
方法。該函式返回一個定義了__next__()
方法的迭代器物件,它一次訪問容器中的一個元素。沒有後續的元素時,__next__()
會引發StopIteration 異常,告訴 for迴圈停止迭代。你可以使用內建的 next() 來呼叫__next__()
,例子如下:
>>> s = 'abc'
>>> it = iter(s)
>>> it
<iterator object at 0x00A1DB50>
>>> next(it)
'a'
>>> next(it)
'b'
>>> next(it)
'c'
>>> next(it)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
next(it)
StopIteration
(2)看過迭代器協議背後的機制後,將很容易將迭代器的行為新增到你的類中。定義一個__iter__()
方法,它返回一個帶有__next__()
的物件。如果類已經定義__next__()
,那麼__iter__()
可以直接返回self:
def fun20_iter():
class Reverse:
"""Iterator for looping over a sequence backwards."""
def __init__(self, data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]
rev = Reverse('spam')
for c in rev:
print(c,end='')
if __name__ == "__main__":
fun20_iter()
# 輸出結果
maps
2.2 生成器
生成器是一種可以簡單有效的建立迭代器的工具。它們像常規函式一樣撰寫,但是在需要返回資料時使用yield
語句。每當對它呼叫next(),生成器從它上次停止的地方重新開始(它會記住所有的資料值和上次執行的語句)。以下示例演示了生成器可以非常簡單地創建出來:
def fun21_yeild():
def reverse(data):
for index in range(len(data) - 1, -1, -1):
yield data[index]
for c in reverse('sabcdefg'):
print(c,end='')
if __name__ == "__main__":
fun21_yeild()
# 輸出結果
gfedcbas
3.資料結構
3.1 字串
(1)如果你不想讓 \ 被解釋為特殊字元開頭的字元,您可以通過新增 r 使用 原始字串
>>> print('C:\some\name') # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name') # note the r before the quote
C:\some\name
(2)字串可以用+操作符連線,也可以用*操作符重複多次:
# 3 times 'un', followed by 'ium'
>>> 3 * 'un' + 'ium'
'unununium'
(3)相鄰的兩個或多個字串字面量(用引號引起來的)會自動連線。
這個功能在你想切分很長的字串的時候特別有用:
>>> text = ('Put several strings within parentheses '
... 'to have them joined together.')
>>> text
'Put several strings within parentheses to have them joined together.'
(4)除了索引,還支援切片。索引用於獲得單個字元,切片讓你獲得子字串(顧左不顧右):
>>> word[0:2] # characters from position 0 (included) to 2 (excluded)
'Py'
>>> word[2:5] # characters from position 2 (included) to 5 (excluded)
'tho'
(5)切片索引具有非常有用的預設值;省略的第一個索引預設為零,省略第二個索引預設為切片字串的長度。
(6)Python 字串不能更改。因此,賦值給字串索引的位置會導致錯誤:
3.2 列表
Python 有幾個 複合資料型別,用來組合其他的值。其中之一是列表
1.各種切片操作會返回一個包含所請求元素的新列表。這意味著下面這個切片操作將會返回一個此列表的(淺)拷貝:
>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2.與字串的不可變特性不同,列表是可變的型別
3.2.1 列表方法
引用自:列表操作
list.append(x)
新增一個元素到列表的末尾。相當於 a[len(a):] = [x].
list.extend(L)
將給定列表L中的所有元素附加到原列表a的末尾。相當於 a[len(a):] = L.
list.insert(i, x)
在給定位置插入一個元素。第一個引數為被插入元素的位置索引,因此 a.insert(0, x) 在列表頭插入值, a.insert(len(a), x)相當於 a.append(x).
list.remove(x)
刪除列表中第一個值為 x 的元素。如果沒有這樣的專案則會有一個錯誤。
list.pop([i])
刪除列表中給定位置的元素並返回它。如果沒有給定位置,a.pop()將會刪除並返回列表中的最後一個元素。(i 兩邊的方括號表示這個引數是可選的,而不是要你輸入方括號。你會在 Python 參考庫中經常看到這種表示法)。
list.clear()
刪除列表中所有的元素。相當於 del a[:].
list.index(x)
返回列表中第一個值為 x 的元素的索引。如果沒有這樣的元素將會報錯。
list.count(x)
返回列表中 x 出現的次數。
list.sort(key=None, reverse=False)
排序列表中的項 (引數可被自定義, 參看 sorted() ).
list.reverse()
列表中的元素按位置反轉。
list.copy()
返回列表的一個淺拷貝。相當於 a[:].
3.2.2 用途
3.2.2.1 棧
列表方法使得將列表用作堆疊非常容易,使用 append()新增項到棧頂。使用無參的 pop() 從棧頂檢出項。
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
3.2.2.2 佇列
列表也有可能被用來作佇列,效率很低。若要實現一個佇列, collections.deque
被設計用於快速地從兩端操作。例如:
def fun15_queue():
from collections import deque
q = deque(['1',2,3,4,5,6])
q.popleft()
print(q)
if __name__ == "__main__":
fun15_queue()
# 輸出結果
'deque([2, 3, 4, 5, 6])'
3.2.2.3 推導式
3.2.2.3.1 普通推導式
列表推導式提供一個生成列表的簡潔方法。
例如:squares = [x**2 for x in range(10)]
上面的例子用於生成一個具有10個元素的列表,元素的值分別是是0,1,…9的平方。
列表推導式由一對方括號組成,方括號包含一個表示式,其後跟隨一個for子句,然後是零個或多個for或if子句。結果將是一個新的列表,其值來自將表示式在其後的for和if子句的上下文中求值得到的結果。例如,下面的 listcomp 組合兩個列表中不相等的元素:
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
如果表示式是一個元組(例如,前面示例中的(x, y)),它必須位於圓括號中,否則會報錯,如下所示:
>>> # the tuple must be parenthesized, otherwise an error is raised
>>> [x, x**2 for x in range(6)]
File "<stdin>", line 1, in ?
[x, x**2 for x in range(6)]
^
SyntaxError: invalid syntax
3.2.2.3.2 巢狀推導式
列表推導式的第一個表示式可以是任何表示式,包括另外一個列表推導式。
考慮下面由三個長度為 4 的列表組成的 3x4 矩陣:
>>> matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]
下面的列表推導式將轉置行和列:
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
正如在前一節中我們所見,巢狀的列表推導式在它後面的for上下文中求值,所以這個例子等效於:
>>> transposed = []
>>> for i in range(4):
... transposed.append([row[i] for row in matrix])
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
在實際中,與複雜的控制流比起來,你應該更喜歡內建的函式。zip()函式對這個使用場景做得非常好:
>>> list(zip(*matrix))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
3.3 元組
有兩種序列資料型別,因為 Python 是一個正在不斷進化的語言,其他的序列型別也可能被新增進來。還有另一種標準序列資料型別:元組(不可改變)。
元組由一組用逗號分隔的值組成,例如:
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
一個特殊的問題是構造包含0個或1個元素的元組:為了實現這種情況,語法上有一些奇怪。空的元組通過一對空的圓括號構造;只有一個元素的元組通過一個元素跟隨一個逗號構造(僅用圓括號把一個值括起來是不夠的)。醜陋,但是有效。例如:
語句t = 12345, 54321, 'hello!'是元組封裝的一個例子:值12345、54321和’hello!'被一起分封裝在一個元組中。其逆操作也是可以的:
def fun17():
t = 12345, 54321, 'hello!'
print(type(t))
x,y,z = t
print(x,y,z)
if __name__ == "__main__":
fun17()
# 輸出結果
'''
<class 'tuple'>
12345 54321 hello!
'''
這被稱為序列分拆再恰當不過了,且可以用於右邊的任何序列。序列分拆要求在等號的左側有與序列中的元素一樣多的變數。注意多重賦值只是同時進行元組封裝和序列分拆。
3.4 集合
集合中的元素不會重複且沒有順序。集合的基本用途包括成員測試和消除重複條目。集合物件也支援數學運算,如並,交,差和對稱差。
類似於列表推導式,集合也支援推導式:
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
3.5 字典
與由數字索引的序列不同,字典是依據鍵索引的,鍵可以是任意不可變的型別;字串和數字始終能作為鍵。元組可以用作鍵,如果它們只包含字串、 數字或元組;如果一個元組直接或間接地包含任何可變物件,它不能用作鍵。不能使用列表作為鍵。
3.6 總結
序列物件可以與具有相同序列型別的其他物件相比較。比較按照 字典序 進行: 首先比較兩個序列的首元素,如果不同,就決定了比較的結果;如果相同,就比較後面兩個元素,依此類推,直到其中一個序列窮舉完。如果要比較的兩個元素本身就是同一型別的序列,就按字典序遞迴比較。如果兩個序列的所有元素都相等,就認為序列相等。如果一個序列是另一個序列的初始子序列,較短的序列就小於另一個。字串的詞典序使用Unicode碼點數字來排序單個字元。下面是同類型序列之間比較的一些例子:
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
4.控制流程
1.我們可以寫一個生成斐波那契 初始子序列的程式,如下所示
>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while b < 10:
... print(b)
... a, b = b, a+b
...
# 輸出結果
1 1 2 3 5 8
2.關鍵字引數 end 可以避免在輸出後面的空行,或者可以指定輸出後面帶有一個不同的字串:
>>> a, b = 0, 1
>>> while b < 1000:
... print(b, end=',')
... a, b = b, a+b
...
1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
3.for 語句是種 迭代器。list() 函式是另一個;它從可迭代量建立列表︰
4.迴圈語句可以有一個 else 子句;當(for)迴圈迭代完整個列表或(while)迴圈條件變為假,而非由break語句終止時,就會執行這個else語句。下面迴圈搜尋質數的程式碼例示了這一點:
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, 'equals', x, '*', n//x
相關推薦
Python 3.7.1 官方文件 總結
Python 3.7.1
1.一些概念
2.小用法
2.1 迭代器:
2.2 生成器
3.資料結構
3.1 字串
3.2 列表
3.2.1 列表方法
list
CentOS7.3利用kubeadm安裝kubernetes1.7.3完整版(官方文件填坑篇)
安裝前記:
近來容器對企業來說已經不是什麼陌生的概念,Kubernetes作為Google開源的容器執行平臺,受到了大家的熱捧。搭建一套完整的kubernetes平臺,也成為試用這套平臺必須邁過的坎兒。kubernetes1.5版本以及之前,安裝還是相對比較方便的,官方
Hadoop(2.7.3)叢集配置-官方文件
目標
本文描述瞭如何安裝、配置和管理有實際意義的Hadoop叢集,其規模可從幾個節點的小叢集到幾千個節點的超大叢集。如果你希望在單機上安裝Hadoop玩玩,從這裡(Single Node Setup)能找到相關細節。
這份文件不包含更先進話題,比如安
[Python 3系列]讀寫文件
file文件路徑文件有兩個關鍵屬性:“文件名”和“路徑”。路徑指明了文件在計算機上的位置。在windows上,路徑書寫使用倒斜杠作為文件夾之間的分隔符。但在OS X和Linux上,使用正斜杠作為它們的路徑分隔符。如果想要程序運行在所有操作系統上,在編寫python腳本時,必須處理這兩種情況。如果將單個文件和路
Python 3.7.1 基礎 資料型別 列表 元組 字串
序列型別
1.前言
2.序列的通用操作
3. 序列型別
3.1 可變序列型別
3.1.1 列表 List
3.1.1.1 class list([iterable])
3.1.1.2 s
Python 3.7.1 模組 正則表示式 re
正則表示式操作
1. 正則表示式語法
1.1 特殊字元
.
^
$
*
+
?
*?,+?,??
{m}
{m,n}
{m,n}
Python 3.7.1 模組 string
string-常用string操作
1. 字串常量
string.ascii_letters
string.ascii_lowercase
string.ascii_uppercase
string.digits
stri
Python 3.7.1 基礎-資料型別-字串
字串
1.基本內容
1.1 概念
1.2 構造方法
1.3 組成
1.3.1 轉義
1.4 例子:
2.方法
2.1 大小寫
str.capitali
lodash官方文件總結
lodash官方中文文件:https://www.css88.com/doc/lodash/
Array
_.chunk (一個數組在內部分割出兩個陣列,可以指定第一個陣列的引數個數)
_
Python 3.7.1 基礎-內建型別
內建型別
1.真值測試
2.布林運算
3.比較運算子
4.數值型別
4.1 操作運算子
4.2 整數的一些方法
int.bit_length()
int.to_bytes(length, byteo
Python 3.7.1 基礎 資料型別 集合 set
集合
1. 構造
2. 方法
2.1 set 和 frozenset的公有操作:
len(s)
x in s
x not in s
isdisjoint(other)
issubset(o
Python 3.7.1 模組 資料型別 淺和深拷貝操作 copy
目錄
1. 需求描述
2. 模組方法
copy.copy(x)
copy.deepcopy(x[, memo])
exception copy.error
3. 區別
3.1 普通例項
3.2
Python 3.7.1 模組 資料型別 高效的數值陣列 array
結構
1. 明確陣列型別
2. 定義
class array.array(typecode[, initializer])
3.方法和常量
3.1 常量
array.typecodes 常量
Python 3.7.1 模組 併發執行 底層執行緒API _thread
底層執行緒API
1._thread 函式
exception _thread.error
_thread.LockType
_thread.start_new_thread(function, args[, kwargs])
_
Django專案:堡壘機(Linux伺服器主機管理系統)--01--01堡壘機重寫DJANGO賬戶表 python相關軟體安裝流程圖解————————python安裝——————python-3.7.1-amd64 python相關軟體安裝流程圖解————————pycharm安裝——————pyc
python相關軟體安裝流程圖解————————python安裝——————python-3.7.1-amd64
https://www.cnblogs.com/ujq3/p/10098166.html
python相關軟體安裝流程圖解————————pyc
django 2.1官方文件翻譯-模板(進行中)
django的官方文件在transifex上翻譯,本來想貢獻一下,結果發現那個介面實在是受不了。自己翻吧
模板 作為一個Web框架,Django需要一種動態生成HTML的便捷方式。最常見的方法是使用模板。模板包含HTML輸出的靜態部分以及能插入動態內容的一些特殊語法。有關使用模板建立HT
《Spark1.6.1官方文件》Spark1.6.1操作指南
原文連結 譯者:小村長
本專案是 Apache Spark1.6.1方文件的中文翻譯版,之前翻譯過spark1.5,由於網站有組織翻譯Spark1.6.1所以我又重新翻譯了一下,我翻譯的這一章和spark1.5一樣。本次翻譯主要針對對Spark感興趣和致力於從事大資料方法開發的人員提供有價
SpringBoot 2.1.1 官方文件閱讀筆記 part1
2.1.1版本要求:
Java 8 至 Java 11
Spring 5.1.3
內建工具支援:
Maven 3.3+
Gradle 4.4+
內建 servlet 容器:
Tomcat 9.0 要求 Servlet 4
01.centos 7 安裝 python 3.7.1
make download orm gdbm python2 usr b- ncurses 查看 centos 7 安裝 python 3.7.1
https://www.python.org/downloads/source/
在官網上下載 Python-3.7.1.ta
Python官網中,Python 3.7.1 的windows版本的區別
python官網有幾個下載檔案,有什麼區別?
1、進入Python官網http://www.python.org,在“Downloads”下拉選單中選擇相應的作業系統,我們選擇windows。
Python 3.7.1 - 2018-10-20
Download