python 小知識點 小技巧

2021-10-06 13:24:14 字數 2509 閱讀 7228

1. 根據分數判定等級

用if條件判斷感覺很low, 使用bisect瞬間就高大上了(使用二分法來排序)

import bisect as bs

score = [60, 70, 80, 90]

f = "edcba"

level = lambda x: f[bs.bisect(score, x)]

print(level(46), level(69), level(76), level(80), level(92))

說明:使用bisect模組的函式前先確保操作的列表是已排序的,有興趣可以研究下bisect_left和bisect_right

2.寫乙個字串轉數字的函式類似int

from functools import reduce

num =

def str2int(s):

return reduce(lambda x, y: x*10+y if y>=0 else x, map(lambda x: num[x] if x in num else -1, s))

print(str2int("12456"))

print(str2int("12e3456e")) # 需要數字開頭

3. 楊輝三角
def ********s(num):

def up():

n = [1]

while true:

yield n

n = [1]+[n[n]+n[n-1] for n in range(1, len(n))]+[1]

for t in up():

print(t)

num -= 1

if not num:break

********s(9)

4. *將迭代器解壓出來

由於python3版本為了節約記憶體很多函式返回值都是生成器,如常用的map, filter等

單有時候我們想要直接獲得結果,此時就可以使用*來獲得

用*解析出的是多個物件,可以傳遞給不定長引數,不能做可迭代物件用for 遍歷

tmp = ['1', '2', '3']

print(map(int, tmp)) 

print(*map(int, tmp))

輸出

1 2 3
例項

import string 

tmp = ['1', '2', '3']

def get(*args):

for i in (args):

print(i, type(i))

get(*map(int, tmp))

get(*string.ascii_lowercase[:3])

輸出

1 2 3 a b c
5. rf字串

f 字串前面可以直接加r組成r字串

import re

src = '12+3*5/2'

tmp =

flags = rf""

print(flags, re.findall(flags, src), re.split(flags, src))

輸出

[*+-/] ['+', '*', '/'] ['12', '3', '5', '2']
注意符號循序要按ascii順序先後,否則會報錯: 

sre_constants.error: bad character range ± at position 1*

6. or取代if else

python中使用if else來替代其他語言的?:三目運算,

但如果我們只是判斷是否是空值(none, false, 0, 0.0, 0l, 『』, (), , {}),我們只需要使用or即可實現,省略了if else的判斷

示例:b和c是相同的效果

a = input("輸入:")

b = a if a else "none"

c = a or "none"

print(b, c)

7. 字典get預設值的妙用

如下面的例子是統計單詞數量, 使用get時設定預設值,可以省去判斷get再做新增的麻煩

words = ["shadow", "eason", "go", "shadow", "eason", "go", "", "shu"]

counts =

for word in words:

counts[word]=counts.get(word,0)+1

print(counts)

Python小知識點

1.時間戳 從1970年到現在的秒數 time2 time.time print time2 date9 datetime.datetime.now print date9.timestamp 上面是兩種用到時間戳的 stamp 郵戳。timestamp 時間戳,時間線。2.執行緒休眠 爬蟲 獲取對...

Python小知識點

1.預設引數 必須放在引數列表的隊尾 普通形參必須放在預設引數的前面 def test a,b 3 passtest test 2.函式引數可以為任意型別 testb testa 3.args返回的是乙個元組 4.map函式裡面需要兩個值 值1 必須是函式 值2 序列 容器 作用 將序列裡面的每個元...

python 小知識點

python strip 方法用於移除字串頭尾指定的字元 預設為空格或換行符 或字串行。注意 該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。strip 方法語法 str.strip chars 返回移除字串頭尾指定的字元生成的新字串。以下例項展示了strip 函式的使用方法 以上例項輸出...