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) = x²,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.mzph.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…

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站的视频链接&…

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…

二三星缩水软件手机版_还在抱怨三星手机不好用?用这些软件立马解决

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…

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;由父进程来建立。管道两端的进程各自都将该管道视作一个文件。一个…

阿里云胡晓明:数据智能将为城市生活带来真正价值

8月30日&#xff0c;在2017全球&#xff08;上海&#xff09;人工智能创新峰会-世界人工智能城市规划大会上&#xff0c;阿里巴巴集团资深副总裁、阿里云总裁胡晓明作《通往智能之路》主题演讲&#xff0c;指出数据智能将从交通、医疗、城市治理等方面影响城市生活&#xff0c;…

【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指定了填充地…

十月百度,阿里巴巴,迅雷搜狗最新面试七十题(更新至10.17)

十月百度&#xff0c;阿里巴巴&#xff0c;迅雷搜狗最新面试十一题 引言 当即早已进入10月份&#xff0c;十一过后&#xff0c;招聘&#xff0c;笔试&#xff0c;面试&#xff0c;求职渐趋火热。而在这一系列过程背后浮出的各大IT公司的笔试/面试题则蕴含着诸多思想与设计&…

fasttext 文本分类_4种常见的NLP实践思路【特征提取+分类模型】

越来越多的人选择参加算法赛事&#xff0c;为了提升项目实践能力&#xff0c;同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好&#xff0c;现实却是&#xff1a;看完赛题&#xff0c;一点思路都木有。那么&#xff0c;当我们拿到一个算法赛题后&#xff0c;如何破题&a…

Angular4学习笔记(六)- Input和Output

概述 Angular中的输入输出是通过注解Input和Output来标识&#xff0c;它位于组件控制器的属性上方。 输入输出针对的对象是父子组件。 演示 Input 新建项目connInComponents:ng new connInComponents.新增组件stock:ng g component stock.在stock.component.ts中新增属性stockN…

Python 常见加密方式和实现

Python 加密与解密小结 这篇文章主要介绍了Python 加密与解密,使用base64或pycrypto模块 前言 据记载&#xff0c;公元前400年&#xff0c;古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间&#xff0c;德国军方启用“恩尼格玛”密码机…

jenkins日志乱码linux,Jenkins控制台中乱码问题解决

由于服务器环境及应用层各版本的不同、编码方式的不同因此会有很多种情况会出现乱码问题。由于Jenkins中的job运行的是独立的一个shell环境&#xff0c;许多的环境变量与服务器中是不一样的&#xff0c;因此在job中执行的命令也就会有所差异。因此可以在job中执行env命令&#…

windows商店_Windows记事本应用现在可以从Microsoft Store中获得

早在2019年8月&#xff0c;微软就宣布将把人们最常用的Windows记事本应用搬到应用商店&#xff0c;让这款深受用户喜爱的应用更新速度更快、响应更灵敏。12月晚些时候&#xff0c;微软却放弃了这一计划&#xff0c;也没有给出太多理由。但现在&#xff0c;这一计划已经完成&…