python3介面程式設計 Python3程式設計技巧

2021-10-11 04:44:16 字數 4110 閱讀 1934

in [1]: fromrandom import randint

in [2]: data=[randint(-10,10) for _ in range(10)]

in [3]: data

out[3]: [-3, -4, 3, 4, 7, -2, -4, 1, 7, -9]

#過濾列表中的負數

in [9]: list(filter(lambda x:x>=0,data))

out[9]: [3, 4, 7, 1, 7]

[for x in data if x>=0]

# 列表生成式解法

[xfor x in data if x>=0]

#哪個更快,列表解析更快,遠快於迭代

in [15]: %timeit [x for x in data if x>=0]581 ns ± 23.8 ns per loop (mean ± std. dev. of 7 runs, 1000000loops each)

in [16]: %timeit filter(lambda x:x>=0,data)237 ns ± 4 ns per loop (mean ± std. dev. of 7 runs, 1000000loops each)

#得到20個同學的成績

d=#字典解析式,iteritems同時迭代字典,

#得到分數大於90的同學

#集合解析

in [35]:

out[35]:

#為元祖中的每個元素命名,提高程式可讀性

#元祖儲存空間小,訪問速度快

#定義常量

name= 0age=1***=2email=3#拆包用法,定義類似其他語言的列舉型別,也就是定義數值常量

name,age,***,email=range(4)

#案例student=('jim',16,'male','[email protected]')

#name

print(student[0])

#age

print(student[1])

#通過常量可以優化為

print(student[name])

print(student[age])

#namedtuple是繼承自tuple的子類,namedtuple和tuple比較有更酷的特性

#namedtuple建立乙個和tuple類似的物件,而且物件擁有可以訪問的屬性。這物件更像帶有資料屬性的類,不過資料屬性是唯讀的。fromcollections import namedtuple

student= namedtuple('student',['name','age','***','email'])

s=student('jim',16,'male','[email protected]')

s.name

s.age

#統計序列中元素出現的頻度fromrandom import randint

data=[randint(0,20) for _ in range(30)]

#建立字典

#方法1

c=dict.fromkeys(data,0)

in [52]: for x indata:

...: c[x]+=1#方法2,統計詞頻fromcollections import counter

c2=counter(data)#講序列傳入counter的構造器,得到counter物件是元素頻度的字典

#使用most_common統計詞頻

in [58]: c2.most_common(3)

out[58]: [(10, 4), (20, 3), (8, 3)]

#統計英文作文詞頻

import re

txt=open('emmmm.txt').read()

#分割後賦給counter

c3=counter(re.split('\w',txt))

#找到頻率最高的10個單詞

c3.most_common(10)

#內建函式是以c的速度執行,如sortedfromrandom import randintd=#

# sorted(d)

in [15]: zip(d.values(),d.keys())

out[15]: in [16]: list(zip(d.values(),d.keys()))

out[16]: [(68, 'x'), (70, 'y'), (77, 'z'), (72, 'a'), (65, 'b'), (69, 'c')]

#快速找到多個字典中的公共鍵

#in [1]: fromrandom import randint,sample

in [2]: sample('abcdefg',3)

out[2]: ['c', 'a', 'b']

in [4]: sample('abcdefg',randint(3,6))

out[4]: ['b', 'a', 'd']

in [5]: s1=

in [9]: s1

out[9]:

in [10]: s1=

in [11]: s1

out[11]:

in [12]: s1

out[12]:

in [13]: s2=

in [15]: s3=

#for迴圈遍歷方法,找到s2,s3都有的k

in [19]: res=

in [20]: for k ins1:

...:if k in s2 and k ins3:

in [21]: res

out[21]: ['b']

#通過字典的keys()方法,找到三個字典同樣的key

in [26]: s1.keys()&s2.keys()&s3.keys()

out[26]:

#通過map得到乙個迭代器物件

#in [27]: map(dict.keys,[s1,s2,s3])

out[27]: in [28]: list(map(dict.keys,[s1,s2,s3]))

out[28]:

[dict_keys(['g', 'd', 'b']),

dict_keys(['g', 'a', 'c', 'b', 'f']),

dict_keys(['d', 'f', 'b', 'c', 'e', 'a'])]

#通過reduce取出同樣結果

in [30]: fromfunctools import reduce

in [31]: reduce(lambda a,b:a&b,map(dict.keys,[s1,s2,s3]))

out[31]:

#使得fromtime import timefromrandom import randintfromcollections import ordereddict

d=ordereddict()

players= list("abcdefgh")

start=time()for i in range(8):

input()

p=players.pop(randint(0,8-i))

end=time()

print(i+1,p,end-start)

d[p]=(i+1,end-start)

print('')

print('-'*20)for k ind:

print(k,d[k])

#檢視使用者歷史記錄功能,標準庫collections的deque,雙端迴圈佇列,存在內容中,pickle儲存到檔案fromrandom import randintfromcollections import deque

n= randint(0,100)

history= deque(,5)

def guess(k):if k ==n:

print('正確')returntrueif k

print('%s is less-than n'%k)else:

print("%s is greater-than n"%k)returnfalsewhiletrue:

line= input("請輸入乙個數字:")ifline.isdigit():

k=int(line)

print(list(history))

Python3 介面自動化 1 基礎介紹

一 請求包括哪些內容 1.請求位址 2.請求方法 3.請求引數 4.請求響應 二 http請求包含三個部分 2.訊息頭 content type content length 3.請求正文 請求引數 三 get和post請求的特點 1.get請求 請求引數放在位址上面,已?打頭,引數是鍵值對存在,多...

Python3 介面自動化 1 基礎介紹

一 請求包括哪些內容 1.請求位址 2.請求方法 3.請求引數 4.請求響應 二 http請求包含三個部分 2.訊息頭 content type content length 3.請求正文 請求引數 三 get和post請求的特點 1.get請求 請求引數放在位址上面,已?打頭,引數是鍵值對存在,多...

Python3介面自動化框架 設計框架日誌系統

介面自動化測試框架之設計日誌系統 日誌可以幫助程式設計師快速定位並解決問題,日誌系統在任何程式系統中都必不可少,日誌的收集也同樣有更多的日誌框架或工具支援。關於下面長篇的大論,其實只要三行 就可以完事了。不信請看最後面 coding utf 8 author qguan import os impo...