日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python之eval函数,map函数,zip函数

發(fā)布時(shí)間:2023/12/18 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python之eval函数,map函数,zip函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

eval(str)函數(shù)很強(qiáng)大,官方解釋為:將字符串str當(dāng)成有效的表達(dá)式來求值并返回計(jì)算結(jié)果。所以,結(jié)合math當(dāng)成一個(gè)計(jì)算器很好用。

eval()函數(shù)常見作用有:
1、計(jì)算字符串中有效的表達(dá)式,并返回結(jié)果

>>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> eval("n + 4") 85

2、將字符串轉(zhuǎn)成相應(yīng)的對象(如list、tuple、dict和string之間的轉(zhuǎn)換)

>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" >>> b = eval(a) >>> b [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] >>> a = "{1:'xx',2:'yy'}" >>> c = eval(a) >>> c {1: 'xx', 2: 'yy'} >>> a = "(1,2,3,4)" >>> d = eval(a) >>> d (1, 2, 3, 4)

3、將利用反引號轉(zhuǎn)換的字符串再反轉(zhuǎn)回對象

>>> list1 = [1,2,3,4,5] >>> `list1` '[1, 2, 3, 4, 5]' >>> type(`list1`) <type 'str'> >>> type(eval(`list1`)) <type 'list'> >>> a = eval(`list1`) >>> a [1, 2, 3, 4, 5]

map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。

舉例說明,比如我們有一個(gè)函數(shù)f(x)=x%2,要把這個(gè)函數(shù)作用在一個(gè)list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()實(shí)現(xiàn)

#使用lambda函數(shù)

>>> print map(lambda x: x % 2, range(7))

[0, 1, 0, 1, 0, 1, 0]

一個(gè)最簡單的例子,如基于f(x) = x2,map()作用于list [1, 2, 3, 4, 5, 6, 7, 8, 9]后的結(jié)果如下:返回結(jié)果仍為list

?

以前使用zip ,只用過最簡單的,合并兩個(gè)列表,沒有仔細(xì)深究過,后來在實(shí)驗(yàn)樓 做實(shí)驗(yàn)的時(shí)候,遇到了這樣的一行代碼:

[list(row) for row in zip(*field)] #field 是一個(gè)矩陣

zip()的基本使用方法

首先看help(zip):

Help on built-in function zip in module __builtin__: zip(...) zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)] Return a list of tuples, where each tuple contains the i-th element from each of the argument sequences. The returned list is truncated in length to the length of the shortest argument sequence. None

大意就是:

定義:zip([seql, …])接受一系列可迭代對象作為參數(shù),將對象中對應(yīng)的元素打包成一個(gè)個(gè)tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入?yún)?shù)的長度不等,則返回list的長度和參數(shù)中長度最短的對象相同。

通俗點(diǎn)就是把幾個(gè)列表(0或者1或者多個(gè))的對應(yīng)位置的元素組成新的tuple, 這些新的tuple 構(gòu)成一個(gè)list.
直接用幾個(gè)例子來說明:

示例

x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz '''結(jié)果是:''' [(1, 4, 7), (2, 5, 8), (3, 6, 9)] #對應(yīng)元素組成一個(gè)新的元組,元組構(gòu)成列表 #---------------------------------------# #無參數(shù)時(shí), x = zip() print x #結(jié)果是: [] #---------------------------------------# #長度不等時(shí),取長度的最小的 x = [1, 2, 3] y = ['a', 'b', 'c', 'd'] xy = zip(x, y) print xy #結(jié)果是: [(1, 'a'), (2, 'b'), (3, 'c')]

常用的方法

#可變參數(shù)傳遞的使用(很常用一種用法),這個(gè)可以用矩陣的轉(zhuǎn)置o~如下:實(shí)驗(yàn) #樓的那代碼就是轉(zhuǎn)置矩陣 x = [[1,2,3], [4,5,6], [7,8,9]] y = zip(*x) print y #結(jié)果是: [(1, 4, 7), (2, 5, 8), (3, 6, 9)] #轉(zhuǎn)置就是: map(list, y) #這種也經(jīng)常這樣使用: 壓縮與解壓縮 x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9]xyz = zip(x, y, z) res = zip(*xyz) print res#結(jié)果可想而知, 壓縮之后 在解壓縮: [(1, 2, 3), (4, 5, 6), (7, 8, 9)]''''''#還有就是字典的構(gòu)造也經(jīng)常使用: x = ['a', 'b', 'c'] y = ['x', 'y', 'z'] z = zip(x, y) d = dict(z) print d#結(jié)果為: {'a': 'x', 'c': 'z', 'b': 'y'}'''''' #------------------------------# #與iter合用: a = [1, 2, 3, 4, 5, 6] b = zip(*([iter(a)] * 2)) print b#結(jié)果是: [(1, 2), (3, 4), (5, 6)]

?

轉(zhuǎn)載于:https://www.cnblogs.com/sjfgod/p/7504735.html

總結(jié)

以上是生活随笔為你收集整理的python之eval函数,map函数,zip函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。