python中的生成器表達式,各種推導式及內置函數
阿新 • • 發佈:2018-02-07
glob 寫入 ash == 列表推導 enume req 余數 mes
一:列表推導式
表現形式:[變量(加工後的數據) for 變量i in 可叠代的數據類型]
例一:30以內所有能被3整除的數
multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
例二:30以內所有能被3整除的數的平方
l1=[i**2 for i in range(1,31) if i%3==0] print(l1)
例三:找到嵌套列表中名字含有兩個‘e’的所有名字
names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘], [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]] l1=[name for i in names for name in i if name.count("e")==2] print(l1)
ps:把列表解析的[]換成()得到的就是生成器表達式,其中,列表推導式比較直觀,占內存,生成器表達式不容易看出內容,省內存.
l1=(i**2 for i in range(1,31) if i%3==0) print(l1) #<generator object <genexpr> at 0x000001DE23D4DE58> print(l1.__next__())
二:字典推導式
例一:將一個字典的key和value對調
mcase = {‘a‘: 10, ‘b‘: 34} mcase_frequency = {mcase[k]: k for k in mcase} print(mcase_frequency)
三:集合推導式
計算列表中每個值的平方,自帶去重功能。
squared = {x**2 for x in [1, -1, 2]} print(squared) # Output: set([1, 4])
四:python中的內置函數
1,print的用法
#1,去掉換行符 print(‘666‘,end=‘‘) print(‘666‘) #2,添加分割符 print(1,2,3,4,5,sep=‘|‘) #1|2|3|4|5 #3,寫入文件 f = open(‘file‘,‘w‘,encoding=‘utf-8‘) print(666,file=f) f.close()
2,
locals() 將局部的變量儲存起來
globals() 將全局的變量,函數名,等等 儲存起來.
def func(): name = ‘alex‘ print(locals()) print(globals()) func()
3 , help(xxx) 將你查詢的對象所有信息都拿出來.
4 , abs()取絕對值
print(abs(-1)) print(abs(1))
5, 最大值和最小值
#1求絕對值最大的數 ret = max(1,2,-3,key=abs) print(ret) #2求最小值 ret = min([1,2,3]) print(ret)
6,sum 求和
a=sum([1,2,8]) print(a) #計算列表中的和,再附加一個數的和 ret = sum([1,2,3],10) print(ret)
7,callable 判斷此變量是不是函數名
name = ‘alex‘ print(callable(name)) def func(): print(666) print(callable(func))
8, hash() 通過哈希表的規則,將對象轉換成哈希值
print(hash(‘fdsakfhdsafsda‘)) print(hash(‘fd‘)) print(hash((‘a‘,‘b‘))) print(hash(True))
9, all 可叠代對象裏面的所有的值轉化成bool值如果都是True則,返回True
print(all([1,2,3,0]))
10, 進制轉換
#十進制轉化成二進制 print(bin(100)) #將十進制轉化成八進制 print(oct(9)) #將十進制轉化成十六進制 print(hex(33))
11,數據類型 float ,complex(復數)
print(1.35432,type(1.35432)) print(float(3))
12, divmod() 分頁
print(divmod(7,2)) #(商,余數)
13, enumerate(iterable,start 起始值) 枚舉
l = [‘手機‘,‘電話‘,‘娃娃‘,]
for k,v in enumerate(l,1):
print(k,v)
14, eval 有返回值 除去字符串兩邊的引號,返回裏面的內容
exec 沒有返回值 除去字符串兩邊的引號,執行裏面的代碼
s = "{‘name‘:‘alex‘}" print(eval(s),type(eval(s))) #{‘name‘: ‘alex‘} <class ‘dict‘> s1 = "1+2+3+4" print(eval(s1)) #10 code = ‘‘‘for i in range(10): print(i)‘‘‘ exec(code)
python中的生成器表達式,各種推導式及內置函數