欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python3基礎概覽

系統 1638 0

https://docs.python.org/3/tutorial/

#! /root/python-3.6.5/bin/python3.6 ?(制定用誰來解析下面的code,我沒有將pthon3.6安裝到系統路徑,就這樣寫了)
#! /usr/bin/env python3 ???(如果安裝在系統路徑,可以直接這樣寫)

?

基本運算

Python算術運算符

            
              /????除,x 除以 y(返回浮點型)
**????冪,返回x的y次冪
//????取整除,返回商的整數部分(類C語言的除)????9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
            
          

Python比較運算符

            
              ==, !=, >, <, >=, <=??(全部類C)
            
          

Python賦值運算符

            
              =, +=, -=, *=, /=, %=, **=, //=??(全部類C)
            
          

Python位運算符(全部類C)

            
              &, |, ^, ~, <<, >>,
            
          

Python邏輯運算符

            
              and??????(試圖找到第一個false)從左到右計算表達式的值,為真則continue,所有均為真則結果為最后一個值,遇假返回第一個假的值

or????????(試圖找到第一個true)從左到右計算表達式的值,為假則continue,所有均為假則結果為最后一個值,遇真則返回第一個為真的值

除了True和False外,None,數字0,空序列(空字符串 "" ,空元組,空list和空字典)均被python認為是假,其他認為是真
            
          

Python成員運算符 in / not in

            
              in????如果在指定的序列中找到值返回 True,否則返回 False。????x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in????如果在指定的序列中沒有找到值返回 True,否則返回 False。????x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

for xx in 序列,遍歷序列元素,序列可以是(有序的) string/list/tuple 或 (無序的) set/dict(dict.keys())
            
          

Python身份運算符

身份運算符用于比較兩個對象的存儲單元

            
              is????判斷兩個標識符是不是引用自一個對象????x is y, 類似 id(x) == id(y) , 如果引用的是同一個對象則返回 True,否則返回 False

is not????判斷兩個標識符是不是引用自不同對象????x is not y , 類似 id(a) != id(b)。
            
          

注: id()函數用于獲取對象內存地址。如果x 和 y 賦予相同的value,那么python會讓兩個變量引用到 那個相同的內存

?

?

數值類型

Python3 支持 int(python3中唯一的整數類型)、float、bool、complex(復數)。Number值本身不允許改變(即,change某個變量的值其實就是新分配空間了) 。內置的 type() 函數可以用來查詢變量所指的對象類型。

?

數據類型的轉換:

            
              ? int(x) 將x轉換為一個整數。

? str(x) 將x轉換為一個string。

? float(x) 將x轉換到一個浮點數。

? complex(x) 將x轉換到一個復數,實數部分為 x,虛數部分為 0。

? complex(x, y) 將 x 和 y 轉換到一個復數,實數部分為 x,虛數部分為 y。x 和 y 是數字表達式。
            
          

? 1、Python可以同時為多個變量賦值,如a, b = 1, 2。

? 2、一個變量可以通過賦值指向不同類型的對象。

? 3、在混合計算時,Python會把整型轉換成為浮點數。

? 4、Python支持復數,復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示,復數的實部a和虛部b都是浮點型

? 5、del value即刪除變量對數字對象的引用 (當引用計數為0時,此數字對象可能會被garbage collect )

            
              >>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
????
              
                
                  
                    
                      
>>> isinstance(a, int)
????True
                    
                  
                
              
            
          

?

字符串

? 字符串使用單引號和雙引號等價。? 字符串相加表示連接,相乘表示重復。 ? 索引字符串 或 切片式索引 都是只讀的

            
              str1 = "hello fangding\n"????#轉義字符串,\n被轉義為換行
str2 = r"hello fangding\n"????#raw字符串,告訴python關閉轉義
str3 = u"hello fangding\n"????#u字符串,告訴python此串為unicode編碼(也會轉義的)
str4 = "your age %d,sex %s,record %12.5f\n"%(28,"male",78.5)????#格式化字符串(類C)(12.5f表示整個78.5占12個字符,小數點后保留5位精度)
str5 = '''
????多
????行
????串'''?????????#''' '''或者 """ """ 之間用于表示多行字符串(有\則同樣會轉義)

str1 = "hello fangding\n", 則str1[0]=="h",??str1[1]=="e",??str1[0]=="l",…….??#索引字符串,只讀,str1[0]="a"會導致出錯

str1[2:5]????????字符串取片段(左閉右開!) ,str1的第[2][3][4]個字符
str1[2:]? ? ? ? ? ?str1的第[2]到最后的所有字符
str1[2:-1]? ? ? ? str1的第[2]到第[-2]個字符(倒數第二個)
str1[:5]? ? ? ? ? ?str1從開始到第四個字符
str1[8:3:-1]? ? ?str1的第[8]到第[4]個字符,-1是步長
            
          

? 常用的字符串庫函數 >>>help(str)

            
              len(str)????字符串的長度,特殊轉義字符包括\n也計算在內
int(str)????將純數字字符串轉換為int(若字符串內含非數字則會報錯)
ord(str)????獲得字符的ASCII碼值(str的len只能是1,否則報錯)
chr(int)????根據ASCII碼值得到字符
str.find(s,a,b)????????在str[a,b)區間內查找字符串s(a和b均為可選參數,不寫則默認整個字符串),若出現多處,返回最左邊的index,沒找到返回-1
str.rfind(s,a,b)????在str[a,b)區間內查找字符串s(a和b均為可選參數,不寫則默認整個字符串),若出現多處,返回最右邊的index,沒找到返回-1
str.strip()????????????去掉str左右兩邊的空格,相當于str.strip(" "),若寫作str.strip("\n"),則去掉str左右兩邊的\n字符
str.lstrip()????????只是去掉str左邊的空格,相當于str.lstrip(" ")
str.rstrip()????????只是去掉str右邊的空格,相當于str.rstrip(" ")
str.split(" ")????以空格字符作為分隔符,分割str(若有多個連續空格,則中間的那些空格也會被捕捉),空格即split()默認參數
str.replace("fang","ding")????將str中的所有"fang"全部替換為"ding",此函數返回一個副本,str引用的string變量沒有改變
str.isdigit()????????str是否是純數字?
str.isalpha()????????str是否是純英文字符?
str.isalnum()????????str是否是 數字+英文字符?
str.islower()????????str中包含的string是否都是小寫?
str.lower()????????????將str中包含的string全部轉為小寫
str.isspace()????????str是純空格嗎
            
          

?

列表

[ ] 之間、用逗號分隔開的元素列表,類似C中的數組,不同在于數據項可不同類型(甚至可為列表),可動態增減,長度不定。具有數組風格和鏈表風格。

            
              list = []
list1 = [12, "hello fang", 23.5]
list3 = list("this is ABC")?#將一個string轉化為一個list,list每個元素對應了string中的每個字符

len(list1)????????????計算list1長度
list1[0]????????????訪問index為0的元素,越界會報錯,可讀寫訪問(string、元組均只讀訪問)、
list1[0:2:1]????????左閉右開取片段,返回一個包含有list[0] list[1] 數據的新的list,1為缺省步長
for c in list1:?????迭代器訪問list元素
???xxx

list1= ( list1+ list2 ) * 2????????????等價于 list1.extend(list2) * 2 ,鏈表的連接
list1.append("www.baidu.com");????????在list末尾添加元素
list1.insert(index, 35.2)????????在list[index]元素前面插入新元素35.2
del list1[index]????????????????刪除list[index]元素
list1.remove(12)????????????????刪除list中值為12的元素
list1.pop(index)????????????????刪除list[index]元素并將其值返回,默認pop最后一個
list1.index(23.5)????????????????返回 值為23.5的元素的index
list1.count(12)????????????????????統計 值為12的元素的個數,可用于查看set中某個元素是否存在

min(list)?????返回列表中最小的元素
max(list)?????返回列表中最大的元素
sum(list)????返回列表中所有元素的總和(一般為純數字list)
list1.sort([func])????對原來的列表進行排序(list1將被改寫,使用sorted(list1)則獲得臨時副本),可指定func作比較函數,可指定reverse=True。
list1.reverse()????????反向列表的所有元素(list1將被改寫)
list1.clear()????????清空列表的所有元素
list1.copy()????????返回一個列表,和list1的元素完全相同
            
          

?

從序列創建列表。將一些操作應用于序列的每個元素,結果作為生成新列表的元素,或者根據確定的判定條件創建子序列

            
              #對列表中的每個元素x,做x->[x,x^2]的映射,得到列表 [[2, 4], [4, 16], [6, 36]]
[[x, x**2] for x in vec1]
#完整的for-if列表推導,對序列中 >3 的那些元素x,做x->3x的映射。if作為可選過濾器
[3*x for x in vec1 if x > 3]
#嵌套,對每一個元素x,執行后面的for-if, 得到一個長度為 len(vec1)*len(vec2)的list
[x*y for x in vec1 for y in vec2]
#兩個序列對應元素的乘積
[vec1[i]*vec2[i] for i in range(len(vec1))]
#得到一個string組成的list,string代表355/113,精度不斷增加
[str(round(355/113, i)) for i in range(1, 6)]
            
          

?

元組

寫在小括號 ( ) 里,元素之間逗號隔開,數據項可不同類型。與列表類似,但元組的元素不能修改,亦不可增刪。但可以一次刪除整個元組,元組的整體賦值相當于指向另一個新的元組。函數多值返回得到的就是元組。

tuple string list均屬于sequence,三者之間可以互相轉換

            
              tup1=()????????????初始化一個空的元組
tup2=(1,)????????初始化一個只有一個元素的元組,注意必須要加上","不然會被python理解成int類型
tup1[index]????????只讀訪問第[index]個元素(不可以改變其指向)
tup3 = tup1+tup2*2????????????元組的連接,因為元組只讀,所以肯定是返回一個新的元組
for x in (1,2,3): print x????遍歷元組中的元素


            
          

集合

只關心元素存在與否,無序的不重復序列。用于成員關系測試和去重復元素,可以增刪元素。使用 { } 可用于創建集合或字典(區別在于里面的元素是單個數據還是鍵值對)。

            
              set1=set()????????????????????創建一個空的集合只能用set(), {}用于創建空的字典了
set2=set("abcasdg hkdf\n")????將一個string強制轉換為一個set,進set過程自動去重復,空格和\n也被認為普通成員
set4={"Tom","Jim","Mary","Rose"}? ? 字面量創建一個set
set4.add("fang")????向集合中添加一個元素
set4.pop()????????????這是從集合中隨機彈出一個元素
set4.remove(xxx)????從集合中刪除元素xxx,若xxx不在集合中則會報錯
xxx in set4????????????判斷xxx是否在集合中
xxx not in set4????????判斷是否不在集合中
set2.issubset(set3)????????判斷set2是否是set3的子集合
set2.updata(set3)????????返回增加了set3元素后的集合set2

#返回一個集合,為set2 和set3的差集(即在set2中但不在set3中的元素), 等價于set2.difference(set3)
set2 - set3
#返回一個集合,為set2 和set3的并集(即在set2中或者在set3中的元素或者兩個都在的元素) 等價于 set2.union(set3)
set2 + set3
#返回一個集合,為set2 和set3的交集(即同時在set2和set3中的元素)??等價于 set2.intersection(set3)
set2 & set3
#返回一個集合,不同時在set2和set3中的元素
set2 ^ set3
a = {x for x in 'abracadabra' if x not in 'abc'}???????集合推導式(推導出一個集合)
            
          

?

鍵值對集合(字典)

鍵值對集合,即字典,多為哈希表實現。無序,通過key來訪問元素而不是index。key使用常量類型,且在同一個字典中應該唯一

            
              dict1 = {}????????????????????????????????#初始化一個空的字典
dict2 = {"tom":98,"jim":86,"mary":92}????#初始化一個字典,若此時存在相同的key,則先出現的那個被覆蓋
dict1["one"] = "fang"????????#訪問修改字典某個key對應的值。寫入時key不存在則向字典中添加鍵值對,key已存在則覆蓋,讀取時key不存在會報錯,key為字面常量,value無要求
dict1.get("tom","0")????????#獲取key為"tom"的value,若key不存在則返回"0"(不寫則返回None)
"one" in dict1.keys()????????#等價于 dict1.has_key("one"), dict1.keys()返回鍵值組成的list,dict1.values()返回值組成的list,dict1.items()返回(key,value)元組 組成的list
del dict1["tom"]????????????#刪除某個鍵值對
dict1.clear()????????????????#清空字典,對字典本身操作
del dict1????????????????????#刪除整個字典
dict1.pop("tom")????????#返回key為tom的value,并鍵值對從字典中刪除
dict1.popitem()????????????#隨機刪除字典中的一個鍵值對,并返回他們的鍵值對組成的元組

dict3 = {x : x**2 for x in (2, 4, 6)}?????#字典的推導式
for k,v in dict1.items():
????print(k,v)
            
          

?

流程控制

            
              ????if 表達式1:????????????#冒號
????????語句
????elif?表達式4:
????????語句
????else:
????????語句
            
          

沒有switch–case語句

            
              ????while 判斷條件:????#冒號
?? ??? ?語句
            
          

沒有do-while循環

            
              ????#!/usr/bin/env python3
????n = 100
????sum,counter = 0,1???????#復合賦值
????while counter <= n:
????????sum = sum + counter #若此循環體只有一句的話,是可以直接與while放在同一行的
????????counter += 1????????#計算1到100的和
????print("1 到 %d 之和為: %d" % (n,sum))
            
          

?

            
              ????while mylist:
????????mylist.pop()
            
          

while循環和else配合使用(區別于while內部提前break)

            
              ????#!/usr/bin/python3
????count = 0
????while count < 5:
????????print (count, " 小于 5")
????????count = count + 1
????else: print (count, " 大于或等于 5")???#循環條件順次全部執行完畢的時候才會進入
            
          
            
              ????for 
              
                 in 
                
                  :
????????
                  
                    
????else:
????????
                    
                      ?????#順次全部執行完畢后進入(區別于while內部提前break)
                    
                  
                
              
            
          

? ? for可以遍歷任何序列?eg.列表/字符串,可以遍歷range()函數生成的數字序列(c中 for(int i=0;i<10;i++)就使用range()來對標)。

            
              ????range(5)????????#生成一個0-4的序列,類型就是叫range
????range(5,10)????????#生成一個5-9的序列
????range(5,10,2)????#生成一個5-10,步長為2的序列(最后一個數可能并非10而是一個<10的數)
????list(range(5))????????#range強制轉換為一個list
            
          
            
              ????for i in range(5):????????????#打印0-4
????????print(i)
            
          
            
              ????a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
????for i in range(len(a)):????????#C風格訪問list
????????print(i, a[i])
            
          
            
                  #enumerate()能順便獲取序列元素的index(對string/list/tuple均適用)
    for i,x in?enumerate(tup3):
????    print(i,x)??
    #使用zip平行遍歷(同時訪問 list[i],tup[i])多個不要求同類型的序列
    for a,b in?zip(list1,tup1)
    ????print(a,b)

            
          

break 和 continue(類c)

pass 空語句,不做任何事情,一般用做占位語句

            
              ?? ?while True:????????????#相當于while(1);
?????? ?pass
            
          

函數

            
              def funcA(a,b,c):
    return a+b+c
print(funcA(2,3,4))

def funcB(*x)
    print(x)    # 函數的參數前有*表示運行時python收集可變參數,組織成x傳入,x是一個元組

f = lambda a,b,c:a+b+c
print(f(2,3,4))
            
          

調用其它模塊

import其它python模塊(模塊是一個py文件,以.py結尾,其中包含python函數,或python的class,或python對象)。(import 包) , (from 包 import 子包或子包內的func/class/others)

            
              import sys
sys.path.append('fileA.py所在的路徑') ?? ??#同一個目錄下可以省略
#導入python文件level,貌似文件名不可以是數字,eg.2.py,不然 import 2 的時候會語法報錯
import fileA 
              
                

fileA.funcA()
              
            
          
            
              import sys
sys.path.append('fileA.py/fileB.py所在的路徑')
#導入python文件中的具體某個函數(from fileA import * 也是可以的)
from fileA import funcA,funcB
#導入python文件中的具體某個類??(from fileA import * 也是可以的)
from fileB import classA,classB

funcA()
ca = classA()
            
          

?

如果某個 目錄 dirA 下有 __init__.py 文件,那么這個 目錄 會被當成一個包 (dirA下面的python文件就被當作子包)??https://blog.csdn.net/u013210620/article/details/78554138

(python認為 . 的左邊必須是一個python包,不滿足這個要求,就報錯)

            
              import dirA? ? ? ??? ???  #dirA.fileA.funcA()
import dirA.fileA? ? ? ?  #dirA.fileA.funcA()
from dirA import fileA ???#fileA.funcA()
from dirA.fileA import funcA,funcB
            
          

__init__.py 三個作用:?

1.表明此目錄作為一個python包,很多空的 __init__.py 就是只使用了功能(fileA.py 則 fileA 就被python默認是一個包)

2.定義__all__=['subpackage', 'funcA', 'funcB', 'classA', 'classB'], 這樣外部調用 import * 的時候知道要import哪些

3.執行一些python語句(他們會在import的時候被調用),比如 初始化包的語句 或者 import語句

            
              import sys, os
sys.path.append(os.pardir)??#好像直接寫 ".." 也是可以的
from common.functions import *
from common.gradient import numerical_gradient
            
          

?

更高level的調用

            
              import os
str=('../B.py')?????//也可以是一段shell腳本或者c的binary,只要是能在終端打的命令都可以
p=os.system(str)????//執行
print(p)????????????//打印執行結果 0表示 success, 1表示 fail
            
          

調用c/c++模塊?https://www.cnblogs.com/apexchu/p/5015961.html

(首先將c/c++文件make成so文件)

            
              import ctypes
#load the shared object file
xxx = ctypes.cdll.LoadLibrary('./xxx.so')
xxx.funcA()
xxx.funcB()
            
          

將c++模塊封裝為python接口?https://www.cnblogs.com/gkwang/p/4353220.html


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美一级二级三级 | 欧美亚洲在线观看 | 免费网站色 | 国产福利在线免费 | 露娜同人18av黄漫网站 | 中文字幕在线一区二区三区 | 久久久久日韩精品免费观看网 | 性夜影院爽黄e爽在线观看 苏晓晖个人简介军衔 | 九九爱国产| 久久精品一区二区三区四区 | 美女视频黄a视频免费全过程 | 亚洲精品老司机综合影院 | 亚洲色四在线视频观看 | 91看片淫黄大片欧美看国产片 | 操你啦免费视频 | 国产视频1| 99在线精品视频 | 成人午夜爽爽爽免费视频 | 久久久久久一区 | 天天干 夜夜操 | 欧美久操 | 日日爽天天操 | 国产精品91久久久 | 三级成人在线 | 欧美精品第十页 | 国产高清精品一区 | 瑟瑟综合| 亚洲成年人免费网站 | 久久xxx| 一级片国语 | 色黄网站在线观看 | 天天搞天天操 | 夜夜摸夜夜爽 | av小说在线 | 青草视频网站在线观看 | 日本不卡在线一区二区三区视频 | 久久精品网 | 图片综合区 | 日韩成人黄色片 | 欧美级| 国产乱码精品一区二区三区中 |