input("提示性信息")
10余年的甘肅網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整甘肅建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“甘肅網(wǎng)站設(shè)計”,“甘肅網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
如:
input("請輸入數(shù)字")
因為 Python 沒有特別人為規(guī)定數(shù)據(jù)類型,數(shù)據(jù)類型是由計算機(jī)進(jìn)行判定,所以我們 input() 輸入的數(shù)據(jù)均默認(rèn)作為字符串處理,而如果要輸入一些數(shù)字,著需要 eval() 評估函數(shù)對字符串進(jìn)行評估,化為語句(數(shù)字)。
print(...)
默認(rèn)空一行,如果想不空行,則
print(...., end = "")
特性:
進(jìn)制:
特性:
浮點(diǎn)數(shù)間運(yùn)算存在不確定尾數(shù),不是 bug
如:0.1+0.3 → 0.4
0.1+0.2 → 0.30000000000000004
這是由于在計算機(jī)中一切數(shù)據(jù)都是化為二進(jìn)制進(jìn)行存儲的,而有的浮點(diǎn)數(shù)并不能完全化為相等的二進(jìn)制數(shù),只能無限趨近于二進(jìn)制數(shù)。
如:0.1 →
解決方法:
四舍五入:
例如:z = 1.23e-4 + 5.6e+89j
z.real 獲得實部,z.imag 獲得虛部
三種類型存在一種逐漸“擴(kuò)展”或“變寬”的關(guān)系:
整數(shù) → 浮點(diǎn)數(shù) → 復(fù)數(shù)
特點(diǎn):
字符串有 2 類共 4 種表示方法:
擴(kuò)展:
使用[]獲取字符串中一個或多個字符
使用[M:N:K]根據(jù)步長對字符串切片
{參數(shù)序號:格式控制標(biāo)記}
右對齊
^ 居中對齊 | 槽設(shè)定的輸出寬度 | 數(shù)字的千位分隔符 | 浮點(diǎn)數(shù)小數(shù)精度 或 字符串最大輸出長度 | 整數(shù)類型
b , c , d , o , x , X
浮點(diǎn)數(shù)類型
e , E , f , % |
填充、對齊、寬度這三個一組,例如:
"{0:=^20}".format("PYTHON")
→ '=======PYTHON======='
"{0:*20}".format("BIT")
→ '*****************BIT'
"{:10}".format("BIT")
'BIT '
剩下的三個一組,例如:
"{0:,.2f}".format(12345.6789)
→ '12,345.68'
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}x".format(425)
→ '110101001,Σ,425,651,1a9,1A9'
"{0:e},{0:E},{0:f},{0:%}".format(3.14)
'3.140000e+00,3.140000E+00,3.140000,314.000000%'
↓CloseCode↓
使用 raise 語句拋出一個指定的異常。
raise [Exception [, args [, traceback]]]
緊湊形式:適用于簡單表達(dá)式的二分支結(jié)構(gòu)
表達(dá)式1 if 條件 else 表達(dá)式2
例如:
↓CloseCode↓
↓CloseCode↓
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
由條件控制的循環(huán)運(yùn)行方式
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
↓CloseCode↓
可選參數(shù)例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
可變參數(shù)例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
在函數(shù)定義中,經(jīng)常會碰到 *args(arguments) 和作為參數(shù) **kwargs(keyword arguments)。
(事實上在函數(shù)中,和才是必要的,args 和 kwargs 可以用其他名稱代替)
*args 是指不定數(shù)量的非鍵值對參數(shù)。
**kwargs 是指不定數(shù)量的鍵值對參數(shù)。
*args 作為作為元組匹配沒有指定參數(shù)名的參數(shù)。而 **kwargs 作為字典,匹配指定了參數(shù)名的參數(shù)。
*args 必須位于 **kwargs 之前。
args( 通常緊跟一個標(biāo)識符,你會看到a或者args都是標(biāo)識符)是python用于接收或者傳遞任意基于位置的參數(shù)的語法。當(dāng)你接收到一個用這種語法描敘參數(shù)時(比如你在函數(shù)def語句中對函數(shù)簽名使用了星號語法),python會將此標(biāo)識符綁定到一個元祖,該元祖包含了所有基于位置的隱士的接收到的參數(shù)。當(dāng)你用這種語法傳遞參數(shù)時,標(biāo)識符可以被綁定到任何可迭代對象(事實上,它也可以是人和表達(dá)式,并不必須是一個標(biāo)識符),只要這個表達(dá)式的結(jié)果是一個可迭代的對象就行。
**kwds(標(biāo)識符可以是任意的,通常k或者kwds表示)是python用于接收或者傳遞任意基于位置的參數(shù)的語法。(python有時候會將命名參數(shù)稱為關(guān)鍵字參數(shù),他們其實并不是關(guān)鍵字--只是用他們來給關(guān)鍵字命名,比如pass,for或者yield,還有很多,不幸的是,這種讓人疑惑的術(shù)語目前仍是這門語言極其文化根深蒂固的一個組成部分。)當(dāng)你接收到用這種語法描敘的一個參數(shù)時(比如你在函數(shù)的def語句中對函數(shù)簽名使用了雙星號語法)python會將標(biāo)識符綁定到一個字典,該字典包含了所有接收到的隱士的命名參數(shù)。當(dāng)你用這種語法傳遞參數(shù)時,標(biāo)識符只能被綁定到字典(我ID號I它也可以是表達(dá)式,不一定是一個標(biāo)識符,只要這個表達(dá)式的結(jié)果是一個字典即可)。
當(dāng)你在定義或調(diào)用一個函數(shù)的時候,必須確保a和k在其他所有參數(shù)之后。如果這兩者同時出現(xiàn),要將k放在a之后。
lambda函數(shù)返回函數(shù)名作為結(jié)果
↓CloseCode↓
例如:
↓CloseCode↓
運(yùn)行結(jié)果:
↓CloseCode↓
謹(jǐn)慎使用lambda函數(shù)
在使用信號調(diào)用disconnect()方法斷開信號和槽的連接時,信號可以帶簽名也可不帶簽名,參數(shù)可以沒有也可以有一個,這些組合情況下disconnect的處理是不同的,具體情況如下:
?1.PyQt5.14的官網(wǎng)上介紹說如果參數(shù)為空,表示信號連接的所有槽都會斷開,這句話是有歧義的,只是斷開所有與信號簽名匹配的槽,如果調(diào)用時信號不帶簽名,則默認(rèn)斷開第一個簽名對應(yīng)的所有槽;
?2.如果斷開時信號帶簽名,參數(shù)為槽函數(shù),但二者不匹配時則會引發(fā)異常;
?3.如果斷開時信號帶簽名,參數(shù)為connection對象,斷開的是與簽名匹配的連接信號和槽,不按參數(shù)進(jìn)行連接斷開;
?4.如果斷開時信號不帶簽名,參數(shù)為connection對象,則按connection對象斷開連接。
自己寫一個sgn函數(shù)。
def?sgn(x):
if?x0:
return?-1
elif?x==0:
return?0
else:
return?1
Python中有許多內(nèi)置函數(shù),不像print、len那么廣為人知,但它們的功能卻異常強(qiáng)大,用好了可以大大提高代碼效率,同時提升代碼的簡潔度,增強(qiáng)可閱讀性
Counter
collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數(shù)據(jù)類型。這個模塊實現(xiàn)了特定目標(biāo)的容器,以提供Python標(biāo)準(zhǔn)內(nèi)建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數(shù)據(jù)類型:
容器名簡介
namedtuple() 創(chuàng)建命名元組子類的工廠函數(shù)
deque 類似列表(list)的容器,實現(xiàn)了在兩端快速添加(append)和彈出(pop)
ChainMap 類似字典(dict)的容器類,將多個映射集合到一個視圖里面
Counter 字典的子類,提供了可哈希對象的計數(shù)功能
OrderedDict 字典的子類,保存了他們被添加的順序
defaultdict 字典的子類,提供了一個工廠函數(shù),為字典查詢提供一個默認(rèn)值
UserDict 封裝了字典對象,簡化了字典子類化
UserList 封裝了列表對象,簡化了列表子類化
UserString 封裝了字符串對象,簡化了字符串子類化
其中Counter中文意思是計數(shù)器,也就是我們常用于統(tǒng)計的一種數(shù)據(jù)類型,在使用Counter之后可以讓我們的代碼更加簡單易讀。Counter類繼承dict類,所以它能使用dict類里面的方法
舉例
#統(tǒng)計詞頻
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
result = {}
for fruit in fruits:
if not result.get(fruit):
result[fruit] = 1
else:
result[fruit] += 1
print(result)
#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎么實現(xiàn):
from collections import Counter
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
c = Counter(fruits)
print(dict(c))
#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡單了,也更容易閱讀和維護(hù)了。
elements()
返回一個迭代器,其中每個元素將重復(fù)出現(xiàn)計數(shù)值所指定次。元素會按首次出現(xiàn)的順序返回。如果一個元素的計數(shù)值小于1,elements()將會忽略它。
c = Counter(a=4, b=2, c=0, d=-2)
sorted(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']most_common([n])
返回一個列表,其中包含n個最常見的元素及出現(xiàn)次數(shù),按常見程度由高到低排序。如果n被省略或為None,most_common()將返回計數(shù)器中的所有元素。計數(shù)值相等的元素按首次出現(xiàn)的順序排序:
Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]這兩個方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔
實戰(zhàn)
Leetcode 1002.查找共用字符
給你一個字符串?dāng)?shù)組words,請你找出所有在words的每個字符串中都出現(xiàn)的共用字符(包括重復(fù)字符),并以數(shù)組形式返回。你可以按任意順序返回答案。
輸入:words = ["bella", "label", "roller"]
輸出:["e", "l", "l"]
輸入:words = ["cool", "lock", "cook"]
輸出:["c", "o"]看到統(tǒng)計字符,典型的可以用Counter完美解決。這道題是找出字符串列表里面每個元素都包含的字符,首先可以用Counter計算出每個元素每個字符出現(xiàn)的次數(shù),依次取交集最后得出所有元素共同存在的字符,然后利用elements輸出共用字符出現(xiàn)的次數(shù)
class Solution:
def commonChars(self, words: List[str]) - List[str]:
from collections import Counter
ans = Counter(words[0])
for i in words[1:]:
ans = Counter(i)
return list(ans.elements())提交一下,發(fā)現(xiàn)83個測試用例耗時48ms,速度還是不錯的
sorted
在處理數(shù)據(jù)過程中,我們經(jīng)常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted(),它可以對任何可迭代對象進(jìn)行排序,并返回列表
對列表升序操作:
a = sorted([2, 4, 3, 7, 1, 9])
print(a)
# 輸出:[1, 2, 3, 4, 7, 9]對元組倒序操作:
sorted((4,1,9,6),reverse=True)
print(a)
# 輸出:[9, 6, 4, 1]使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:
fruits = ['apple', 'watermelon', 'pear', 'banana']
a = sorted(fruits, key = lambda x : len(x))
print(a)
# 輸出:['pear', 'apple', 'banana', 'watermelon']all
all() 函數(shù)用于判斷給定的可迭代參數(shù)iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為True。
all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0
True
all(['a', 'b', '', 'd']) # 列表list,存在一個為空的元素
False
all([0, 1,2, 3]) # 列表list,存在一個為0的元素
False
all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0
True
all(('a', 'b', '', 'd')) # 元組tuple,存在一個為空的元素
False
all((0, 1, 2, 3)) # 元組tuple,存在一個為0的元素
False
all([]) # 空列表
True
all(()) # 空元組
Trueany函數(shù)正好和all函數(shù)相反:判斷一個tuple或者list是否全為空,0,F(xiàn)alse。如果全為空,0,F(xiàn)alse,則返回False;如果不全為空,則返回True。
F-strings
在python3.6.2版本中,PEP 498提出一種新型字符串格式化機(jī)制,被稱為 “字符串插值” 或者更常見的一種稱呼是F-strings,F(xiàn)-strings提供了一種明確且方便的方式將python表達(dá)式嵌入到字符串中來進(jìn)行格式化:
s1='Hello'
s2='World'
print(f'{s1} {s2}!')
# Hello World!在F-strings中我們也可以執(zhí)行函數(shù):
def power(x):
return x*x
x=4
print(f'{x} * {x} = {power(x)}')
# 4 * 4 = 16而且F-strings的運(yùn)行速度很快,比傳統(tǒng)的%-string和str.format()這兩種格式化方法都快得多,書寫起來也更加簡單。
本文主要講解了python幾種冷門但好用的函數(shù),更多內(nèi)容以后會陸陸續(xù)續(xù)更新~
文章題目:加槽函數(shù)python,槽函數(shù)聲明
文章起源:http://vcdvsql.cn/article34/hsogpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、搜索引擎優(yōu)化、建站公司、網(wǎng)站收錄、虛擬主機(jī)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)