怎么并線(三條電線怎么并線)
791
2025-04-01
Python
Life is short, you need Python.
控制流
if語句語法:
if name ==‘Alice’: print(‘Hi Alice’) else: print(‘False’)
elif語句語法:
name = 'alece' age = 18 if name == 'alice': print("Hi") elif age < 20: print("lolle") elif age >50: print("mmmm") else: print('true')
While語句語法:
spam = 0 while spam<5: print("hello") spam+=1
for循環和range()函數
range()函數的開始、停止和步長
for i in range(12,16): print(i)
執行結果:
for i in range(0,10,2): print(i)
最后一個參數為步長
print(random.randint(1, 20))#隨機生成一個1-20之間的數字
函數:
函數也是一個對象,對象是內存中專門存儲數據的一塊區域,這塊區域就是一個對象,函數可以用來保存一些可執行d的代碼
def語句和參數:
def hello(name): print('hei,'+name) hello('ale')
不定長參數,在定義函數時,可以在形參前邊加個*這樣這個形參將會獲得所有的實參,它會將所有實參保存到一個元組當中(裝包)
def fn(*a): print(a) fn(1,2,3,4)
執行結果:
如果在形參開頭直接寫一個*,則要求我們所有的參數必須以關鍵字的方式傳參
def(*,a,b,c) fn(a = 1,b = 2 , c = 3)
**的形參可以接受其他的關鍵字參數,他會將這寫參數統一保存到一個字典中,字典的key就是參數的名。字典的value就是參數的值。
**的形參只能有一個,并且必須寫到所有參數的最后
def fn(**a): print(a) fn(b = 1,c = 2)
執行結果:
參數的解包(拆包)
def fn (a,b,c)
創建一個元組/列表都可以,字典需要。**解包
t = (10,20,30) t = [10,20,30]
fn(*t) fn(**t)
傳遞實參時,也可以在序列的類型前添加星號,這樣他會自動將序列中的元素依次作為參數傳遞,要求序列中元素的個數必須和形參中元素的個數保持一致
def sum(*no): res = 0 for n in no: res += n print(res) sum(1,2,3)
執行結果:
文檔字符串
help()Python中內置的函數,可以查詢到python中的函數的用法
help(print)
遞歸:
def fn(n): if n == 1: return 1 return n * fn(n-1) print(fn(20)) def fn(s): if len(s)<2: return True elif s[0] != s[-1]: return False return fn(s[1:-1]) print(fn("hello"))
filter()可以從序列中歐過濾出符合條件得元素,保存到新得序列中
參數:
1.函數,根據函數來過濾序列(可迭代得結構)
2.需要過濾得序列(可迭代得結構)
返回值:
過濾后的新序列(可迭代得結構)
匿名函數lambda表達式
lambda a,b : a+b
調用:(lambda a,b : a+b)(10,30)
也可以將匿名函數賦值給一個變量
fn = lambda a,b : a+b fn(20,30)
列表語法:
列表數據類型(類似Java數組)
spam = ["cat","dog","mouse".....] spam[0] = cat
負數索引:例子: spam[-1] = "mouse" 拿列表最后一個值 ,依次類推
切片:就像索引 一樣可以從列表中取單個值一樣,切片可以獲取多個值
spam = ["cat","dog","mouse","face","leg","peg"] print(spam[0:2]) spam[:2]#等價與spam[0:2] spam[0:]#等價于從第一個索引值拿到后面全部的切片值 spam[:]#拿到全部的切片值 len(spam) #返回切片長度
執行結果:
切片索引包含第一個索引值,不含第二個索引值
使用切片改變列表值
spam = ["cat","dog","mouse","face","leg","peg"] spam[0] = "zhangsan" # 給索引為0的位置重新賦值
列表連接和列表復制
列表可以連接和復制,和字符串一樣。+操作符可以連接兩個列表,取得一個新列表
spam = ["cat","dog","mouse","face","leg","peg"] spam1 =["q","2"] spam2 = spam + spam1 print(spam2)
輸出結果:
用del語句從列表中刪除值
spam = ["cat","dog","mouse","face","leg","peg"] del spam[1] print(spam)
執行結果:
遍歷列表,如果使用”+“拼接需要強制類型轉換,將i轉為String類型
spam = ["cat","dog","mouse","face","leg","peg"] for i in range(len(spam)): print("I的數據類型==》",i) print(type(i)) print("index = >",i,"spam的值 = >"+spam[i]) print("index = >"+str(i)+"spam的值 = >"+spam[i])
執行結果:
in和not in操作符
in和not in 用于連接兩個值:一個是要在列表中查找的值,另一個是待查找的列表。
spam = ["cat","dog","mouse","face","leg","peg"] print("cat" in spam) 返回True
spam = ["cat","dog","mouse","face","leg","peg"] print("cat" not in spam) 返回False
enumerate()函數與列表一起使用
在循環每次迭代中,enymerate()將返回兩個值,一個是表中索引和表本身
for i,item in enumerate(spam): print(item,i)
執行結果:
random.choice(spam)#從列表中隨機拿值
spam = ["cat","dog","mouse","face","leg","peg"] random.shuffle(spam) print(spam)
random.shuffle()隨機排序列表
用index()方法獲取列表中的索引位置,如果列表中存在重復值,就返回它第一次出現的索引位置
spam = ["cat","dog","mouse","face","leg","peg"] print(spam.index("cat"))
執行結果:
spam = ["cat","dog","mouse","face","leg","peg"] print(spam.index("peg", 0, 3))
執行結果:
可以指定index()函數在列表中檢索的范圍,如果在該范圍中有該對象,就返回該對象的索引位置,如果沒有就報錯提示:ValueError :對象不在列表中
用append()方法和insert()方法在列表中添加值
spam = ["cat","dog","mouse","face","leg","peg"] spam.append("張三") print(spam)
執行結果:
注:append()方法只能添加新值到列表的末尾,而insert()可以添加到任意位置
spam = ["cat","dog","mouse","face","leg","peg"] spam.insert(2,"張三") print(spam)
用remove()方法從列表中刪除值
spam = ["cat","dog","mouse","face","leg","peg"] spam.remove("cat") print(spam)
執行結果:
注:如果列表中有多項相同值,使用remove()方法只有第一次出現的值會被刪除
使用sort()方法將列表排序
spam = ["cat","dog","mouse","face","leg","peg"] spam.sort() print(spam)
執行結果:
也可以指定關鍵字reverse參數為True讓sort()排序為逆序
spam = ["cat","dog","mouse","face","leg","peg"] spam.sort(reverse=True) print(spam)
執行結果:
spam = ["cat","dog","mouse","face","leg","peg"] spam.sort(key = len)#根據字符串長度進行排序 print(spam)
sort(key = int/str)int:會將列表中的值轉為int進行排序 str:類似
sorted()
使用reverse()方法反轉列表中的值
spam = ["cat","dog","mouse","face","leg","peg"] spam.reverse() print(spam)
執行結果:
元組數據類型
語法結構 :eggs = (‘cat’,'moser','aa')如果元組中只有一個值,后面必須加一個逗號,例:eggs = ('aaa',)
用list()和tuple()函數來轉換類型
list()和tuple()可以在列表和元組之間互相轉換
例:
spam = ["cat","dog","mouse","face","leg","peg"] eggs=tuple(spam) print(eggs) li = list(eggs) print(li)
執行結果:
Python中使用ID函數獲取對象的內存地址
例:
spam = ["cat","dog","mouse","face","leg","peg"] eggs=tuple(spam) print(id(spam)) print(id(eggs))
執行結果:
copy()函數和deepcopy()函數
spam = ["cat","dog","mouse","face","leg","peg"] li = copy.copy(spam) print(li == spam)
執行結果:
spam = ["cat","dog","mouse","face","leg","peg"] li = copy.deepcopy(spam) print(li == spam)
執行結果:
字典數據類型(類似HasMap)
語法結構:person = {'name':'Bob','age':'12'}
字典的索引被稱為“鍵”,鍵及其關聯的值稱為“鍵值對”
print (person['name'])輸出Bob
因為字典是不排序的,所以不i能像列表那樣切片
keys()values()和items()方法
for循環迭代字典中的值
spam={'name':'bob','age':12} for v in spam.values(): print(i)
執行結果:
for循環迭代字典中的鍵
spam={'name':'bob','age':12} for k in spam.keys(): print(k)
執行結果:
for循環迭代字典中的鍵值
spam={'name':'bob','age':12} for k in spam.items(): print(k)
執行結果:
利用keys()values()items()方法可以遍歷出字典中的鍵、值 返回的是一個列表
例:
spam={'name':'bob','age':12} print(spam.items()) print(spam.keys()) print(spam.values())
執行結果:
檢查字典中是否存在鍵或值
語法:
spam={'name':'bob','age':12} print('name' in spam.keys())
執行結果:虛擬機發的rpm包比掛載的rpm版本高 版本對不上
nss 版本高?
get()方法
spam={'name':'bob','age':12} print(spam.get('name','張三'))
執行結果:
如果鍵在字典中不存在,則返回 它的備用值
spam={'name':'bob','age':12} print(spam.get('kk','張三'))
執行結果:
setdefault()方法
給字典中某個鍵設置一個默認值,傳遞給該方法的第一個參數是要檢查的鍵,第二個參數是當該鍵不存在時要設置的值,如果該鍵確實存在,那么setdefault()方法就會返回該鍵的值
例:字典中不存在的鍵
spam={'name':'bob','age':12} spam.setdefault("sex",'男') print(spam)
執行結果:
字典中存在鍵
spam={'name':'bob','age':12} print(spam) print(spam.setdefault("name", '男'))
執行結果:
字符串操作
使用三重引號
print('''何浩東 趙智峰 ‘''')
執行結果:
字符串索引和切片
字符串像列表一樣。使用索引和切片。可以將字符串‘hello world’ 看成一個列表,字符串中的每一個字符都是一個項,都有對應的索引
spam = 'hello world' print(spam[0])
執行結果:
也可以使用切片
字符串放入其他字符串
name = '何浩東' age = 24 print('name is %s,old is %s'%(name,age))
執行結果:
python3.6中引入了f插值
name = '何浩東' age = 24 print(f'name is {name},old is {age}')#重點是字符串前面的f
執行結果:
字符串方法upper()、lower()、isupper()、islower()
upper()和lower()字符串返回一個新字符串,其中原字符串的所有字母都被相應地轉換為大寫或小寫,字符串中的非字母的非字母字符保持不變
spam = "hello world" print(spam.upper())
執行結果:
spam = "hello world" print(spam.isupper())
執行結果:
其余兩個類似
字符串的isX()方法:列舉
isalpha()方法,如果字符串只包含字母,并且非空返回True
isalnum()方法如果字符串只含字母和數字,并且非空,返回True
isdecimal()方法如果字符串只包含數字字符,并且非空,返回True
isspace()方法如果字符串只包含空格,制表符和換行符,并且非空,返回True
istitle()方法如果字符串僅包含以大寫字母開頭,后面都是小寫字母的單詞、數字或空格,返回True
字符串方法startswith()和endswith()
如果上述方法所調用的字符串以該方法傳入的字符串開始或結束,是返回True 否返回False
spam = "hello world" print(spam.endswith('world'))
執行結果:
字符串方法join()和split()
join():一個字符串列表,需要將他們連接成字符串,可以使用join(),按照什么連接字符串
例:
spam = ["cat","dog","mouse","face","leg","peg"] print(','.join(spam))
執行結果:
split():分割字符串,返回列表
例:
spam = "hello world" print(spam.split('h'))
執行結果:
使用partition()方法分割字符串
partition()可以將字符串分成分割字符串前后的文本
例:
spam = "hello world" print(spam.partition('o'))
執行結果:
用rjust()ljust()和center()方法對齊文本
spam = "hello world" print(spam.rjust(20,'*')) print(spam.ljust(20, '*')) print(spam.center(20, '*')))
執行結果:
用strip()rstrip()和lstrip()方法刪除空白字符
spam = " hello world " print(spam.lstrip()) print(spam.strip()) print(spam.rstrip()
執行結果:
使用ord()和chr()函數的字符數值
print(ord('a')) print(chr(65))
執行結果:
用pyperclip模塊的復制粘貼字符串
pyperclip.copy('hello') pyperclip.paste()
集合(Set)
集合和列表非常相似
不同點:
1.集合中只能存儲 不可變對象
2.集合中存儲的對象是無序的(不是按照元素的插入順序保存)
3.集合中不能出現重復元素
創建集合使用{}創建集合
s = {1,2,3,4}
使用set()函數創建集合:
s = set()
可以通過set()來將序列或列表轉為集合
s = set([1,2,3,5,4,6,7,2]) s = set('hello') s = set({'a':1,'b':2})#使用set()將字典轉為集合時,只包含字典中的鍵
集合也可以使用in 和not in ,len()
往集合中添加元素add():
s.add(10)
update()將集合中的元素添加到當前集合中
s.update(s1)
s1也可以是序列,可以是字典作為參數(字典只會使用Key,不會使用value)
集合的運算
在對集合進行運算時,不會影響原來的集合,而是返回一個運算結果
S = {1,2,3,4,5} s2 = {4, 5, 6}
示例語法:result = s & s2
模塊
模塊 是包括 Python 定義和聲明的文件。文件名就是模塊名加上?.py?后綴。模塊的模塊名(做為一個字符串)可以由全局變量?name?得到
fibo.py文件:
# Fibonacci numbers module def fib(n): # write Fibonacci series up to n a, b = 0, 1 while b < n: print(b, end=' ') a, b = b, a + b print() def fib2(n): # return Fibonacci series up to n result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a + b return result
test.py文件:
import fibo fibo.fib(100)
執行結果:
import fibo print(fibo.fib2(100))
執行結果:
拿到模塊名
import fibo print(fibo.__name__)
執行結果:
如果打算頻繁使用一個函數,你可以將它賦予一個本地變量:
import fibo fi = fibo.fib fi(100)
執行結果:
深入模塊
模塊可以導入其他的模塊。一個(好的)習慣是將所有的import語句放在模塊的開始(或者是腳本),這并非強制。被導入的模塊名會放入當前模塊的全局符號表中。import 語句的一個變體直接從被導入的模塊中導入命名到本模塊的語義表中。
例:
from fibo import fib, fib2 fib(100)
from fibo import * fib(100)
出于性能考慮,每個模塊在每個解釋器會話中只導入一遍。因此,如果你修改了你的模塊,需要重啟解釋器;或者,如果你就是想交互式的測試這么一個模塊,可用?[imp.reload()?重新加載,例如?import?imp;?imp.reload(modulename)。
作為腳本來執行模塊
模塊中的代碼會被執行,就像導入它一樣,不過此時?__name__?被設置為?"__main__"。這相當于,如果你在模塊后加入如下代碼:
if __name__ == "__main__": import sys fib(int(sys.argv[1]))
模塊的搜索路徑
導入一個叫 spam 的模塊時,解釋器先在當前目錄中搜索名為 spam.py 的文件。如果沒有找到的話,接著會到 sys.path 變量中給出的目錄列表中查找。 sys.path變量的初始值來自如下:
輸入腳本的目錄(當前目錄)。
環境變量PYTHONPATH 表示的目錄列表中搜索
(這和 shell 變量 PATH 具有一樣的語法,即一系列目錄名的列表)。
Python 默認安裝路徑中搜索。
在支持符號連接的文件系統中,輸入的腳本所在的目錄是符號連接指向的目錄。 換句話說也就是包含符號鏈接的目錄不會被加到目錄搜索路徑中。
實際上,解釋器由sys.path變量指定的路徑目錄搜索模塊,該變量初始化時默認包含了輸入腳本(或者當前目錄), PYTHONPATH和安裝目錄。這樣就允許 Python 程序了解如何修改或替換模塊搜索目錄。需要注意的是由于這些目錄中包含有搜索路徑中運行的腳本,所以這些腳本不應該和標準模塊重名,否則在導入模塊時 Python 會嘗試把這些腳本當作模塊來加載。這通常會引發錯誤。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。