python之eval函數,map函數,zip函數

eval(str)函數很強大,官方解釋為:將字符串str當成有效的表達式來求值并返回計算結果。所以,結合math當成一個計算器很好用。

eval()函數常見作用有:
1、計算字符串中有效的表達式,并返回結果

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

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

>>> 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、將利用反引號轉換的字符串再反轉回對象

>>> 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()函數接收兩個參數,一個是函數,一個是序列,map將傳入的函數依次作用到序列的每個元素,并把結果作為新的list返回。

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

#使用lambda函數

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

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

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

?

以前使用zip ,只用過最簡單的,合并兩個列表,沒有仔細深究過,后來在實驗樓 做實驗的時候,遇到了這樣的一行代碼:

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

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, …])接受一系列可迭代對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。

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

示例

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

常用的方法


#可變參數傳遞的使用(很常用一種用法),這個可以用矩陣的轉置o~如下:實驗
#樓的那代碼就是轉置矩陣 x = [[1,2,3], [4,5,6], [7,8,9]] y = zip(*x) print y #結果是: [(1, 4, 7), (2, 5, 8), (3, 6, 9)] #轉置就是: 
map(list, y) #這種也經常這樣使用: 壓縮與解壓縮

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]xyz = zip(x, y, z) res = zip(*xyz)
print res#結果可想而知, 壓縮之后 在解壓縮:
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]''''''#還有就是字典的構造也經常使用:

x = ['a', 'b', 'c']
y = ['x', 'y', 'z']
z = zip(x, y)
d = dict(z)
print d#結果為:
{'a': 'x', 'c': 'z', 'b': 'y'}''''''
#------------------------------#
#與iter合用:

a = [1, 2, 3, 4, 5, 6]
b = zip(*([iter(a)] * 2))
print b#結果是:
[(1, 2), (3, 4), (5, 6)]

?

轉載于:https://www.cnblogs.com/sjfgod/p/7504735.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454691.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第一個servlet小程序

第一個servlet小程序 com.fry.servlet.HelloServlet 1 package com.fry.servlet;2 3 import javax.servlet.ServletException;4 import javax.servlet.http.HttpServlet;5 import javax.servlet.http.HttpServletRequest;6 import javax.servlet.http.HttpServletResponse;7 im…

騰訊校園招聘面試的秘密

轉自公司同事戴釗的文章 由于從事基層管理崗位的原因&#xff0c;最近兩年有機會在武漢、南京、上海等地進行校園招聘&#xff0c;為公司選拔優秀人才&#xff0c;在這個過程中接觸過一百多名各種類型的應聘畢業生&#xff0c;我深深為這些莘莘學子渴望進入騰訊的熱情所感動&am…

win10開啟oracle服務器配置,Windows環境(Win10)下安裝、配置服務器類Oracle Database 11g Release 2...

該篇為服務器類Oracle Database 11gRelease 2的安裝、配置&#xff0c;若需安裝、配置桌面類(通常是選擇桌面類&#xff0c;如果是將本機作為服務器來使用&#xff0c;則選擇服務器類)&#xff0c;可參考“Windows環境(Win10)下安裝、配置桌面類Oracle Database 11g Release 2”…

簡單的機器學習程序_人體動作識別小程序【機器學習 人工智能】

人體動作識別(Human activity recognition)是健康領域一個熱點問題&#xff0c;它通過加速度計&#xff0c;陀螺儀等傳感器記錄人體運動數據&#xff0c;對人體動作進行識別。最近用微信小程序做了一個動作識別的項目&#xff0c;同時嘗試部署了單片機。首先奉上b站的視頻鏈接&…

python基礎查漏補缺1--算數、字符串與變量

1. math相關函數 函 數描 述ceil(x) 大于或等于x的整數cos(x)  x的余弦 degrees(x)將x的弧度轉換為度數exp(x)e的x次方factorial(n)計算n的階乘(n!),n 必須為整數log(x)以e為底的x的對數log(x,b)以b為底的x的對數pow(x,y)x的y次方radians(s)將x轉換為弧度數sin(x)x的正弦…

CSS布局說——可能是最全的

前言 現在&#xff0c;我們被稱為前端工程師。然而&#xff0c;早年給我們的稱呼卻是頁面仔。或許是職責越來越大&#xff0c;整體的前端井噴式的發展&#xff0c;使我們只關注了js&#xff0c;而疏遠了css和html。 其實&#xff0c;我們可能經常在聊組件化&#xff0c;咋地咋地…

php dingo和jwt,dingo配合laravel、JWT使用

介紹&#xff1a;dingo api包是給laravel和lumen提供的Restful的工具包&#xff0c;它可以與jwt組件一起配合快速的完成用戶認證&#xff0c;同時對于數據和運行過程中所產生的異常能夠捕獲到并且可以做出對應的響應。dingo文檔地址&#xff1a;https://github.com/dingo/api/w…

重啟開源,分享無限--微軟面試187題精選

重啟開源&#xff0c;分享無限--誠邀你加入微軟面試187題的解題中 前期回顧 我想&#xff0c;只要是稍微瀏覽過我博客的朋友都知道&#xff0c;本博客內總體上大致分為兩個部分的內容&#xff1a;1、算法&#xff08;如十六個經典算法研究系列&#xff09;&#xff1b;2、面試與…

二三星縮水軟件手機版_還在抱怨三星手機不好用?用這些軟件立馬解決

S10系列上市讓三星在國內的銷量有所回暖&#xff0c;但是很多小伙伴拿到手機后都在吐槽三星的軟件工程師不行&#xff0c;比如手勢操作太難用了&#xff0c;不如小米人性化。其實這只是你沒找到秘訣而已&#xff0c;三星手機原來還可以這樣使用&#xff1f;三星有一個官方軟件&…

使用Settings Bundle為程序添加設置項

創建一個Demo來學習一個Setting Bundle為程序存儲設置項 Settings Bundle是在自己的程序中建立的一組文件&#xff0c;利用它可以告訴設備中的Settings程序我們寫的程序有哪些設置項。用戶在Settings程序中設置好相關相關選項后回到我們自己的程序&#xff0c;自己的程序中的對…

Netty自娛自樂之協議棧設計

---恢復內容開始--- 俺工作已經一年又6個月了&#xff0c;想想過的真快&#xff0c;每天寫業務&#xff0c;寫業務&#xff0c;寫業務......。然后就是祈禱著&#xff0c;這次上線不要出現線上bug。繼續這每天無聊的增刪改查&#xff0c;學習學習一下自己感興趣的事&#xff0c…

Linux 狀態命令之磁盤狀態 df du

df df&#xff08;disk free&#xff09;命令用于顯示目前在 Linux 系統上的文件系統磁盤使用情況統計。獲取硬盤被占用了多少空間&#xff0c;目前還剩下多少空間等信息&#xff0c;如果沒有文件名被指定&#xff0c;則所有當前被掛載的文件系統的可用空間將被顯示。 默認情…

C++包擴展_利用 MATLAB Coder 將M代碼生成C/C++代碼

利用MATLAB Coder將MATLAB代碼生成C/C代碼?mp.weixin.qq.comMATLAB Coder 可以將MATLAB代碼生成工程中常用的嵌入式或其他硬件平臺的C或者C代碼。使用者可以在MATLAB中進行驗證&#xff0c;然后將生成后的代碼集合到工程中。集合的方式可以是源碼&#xff0c;靜態庫和動態庫。…

linux 進程通信機制,linux的進程通信機制小結

linux向應用軟件提供下列進程間通信手段&#xff1a;####第一類通信方式&#xff1a;只能用于父進程與子進程之間&#xff0c;或者兩個兄遞進程之間。>管道Pipe>信號Signal>跟蹤Trace管道&#xff1a;由父進程來建立。管道兩端的進程各自都將該管道視作一個文件。一個…

看穿面試這件事兒……

報 版權聲明&#xff1a;原創作品&#xff0c;允許轉載&#xff0c;轉載時請務必以超鏈接形式標明文章原始出版、作者信息和本聲明。否則將追究法律責任。本文地址&#xff1a; http://blog.csdn.net/jobchanceleo/archive/2007/04/17/1568254.aspx 有個朋友Min十幾年工作經驗&…

阿里云胡曉明:數據智能將為城市生活帶來真正價值

8月30日&#xff0c;在2017全球&#xff08;上海&#xff09;人工智能創新峰會-世界人工智能城市規劃大會上&#xff0c;阿里巴巴集團資深副總裁、阿里云總裁胡曉明作《通往智能之路》主題演講&#xff0c;指出數據智能將從交通、醫療、城市治理等方面影響城市生活&#xff0c;…

MySQL 之 information_schema

一、information_schema簡介 在MySQL中&#xff0c;把 information_schema 看作是一個數據庫&#xff0c;確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名&#xff0c;數據庫的表&#xff0c;表欄的數據類型與訪問權 限等。在INFORMA…

【iCore1S 雙核心板_FPGA】例程十二:基于單口RAM的ARM+FPGA數據存取實驗

實驗現象&#xff1a; 核心代碼&#xff1a; module single_port_ram(input CLK_12M,input WR,input RD,input CS0,inout [15:0]DB,input [24:16]A,output FPGA_LEDR,output FPGA_LEDG,output FPGA_LEDB); //----------------------------pll-------------------------------//…

curl post https_Linux命令cURL詳解,并實現文件定時上傳到ftp服務器的程序

前言前段時間群里討論&#xff0c;想實現某個文件定時上傳到服務器要怎么來實現。我記得之前做過 一個項目&#xff1a;為高通的iot模組編寫FOTA功能&#xff1a;實現模組可以遠程下載升級鏡像包&#xff0c;實現版本升級功能。并當時使用的一個超級強大的工具cURL。心血來潮&a…

linux系統頁面緩存,Linux緩存機制之頁緩存

內核采用一種通用的地址空間方案&#xff0c;來建立緩存數據與其來源之間的關聯。1) 內存中的頁分配到每個地址空間。這些頁的內容可以由用戶進程或內核本身使用各式各樣的方法操作。這些數據表示了緩存中的內容&#xff1b;2) 后備存儲器struct backing_dev_info指定了填充地…