文档章节

获取map()以在Python 3.x中返回列表

 技术盛宴
发布于 01/19 15:52
字数 809
阅读 66
收藏 0

我正在尝试将列表映射为十六进制,然后在其他地方使用该列表。 在python 2.6中,这很简单:

答: Python 2.6:

>>> map(chr, [66, 53, 0, 94])
['B', '5', '\x00', '^']

但是,在Python 3.1中,以上代码返回一个map对象。

B: Python 3.1:

>>> map(chr, [66, 53, 0, 94])
<map object at 0x00AF5570>

如何在Python 3.x上检索映射列表(如上面的A所示)?

另外,还有更好的方法吗? 我的初始列表对象大约有45个项目,并且id希望将它们转换为十六进制。


#1楼

您为什么不这样做:

[chr(x) for x in [66,53,0,94]]

这称为列表理解。 您可以在Google上找到很多信息,但是这里是list comprehensions上的Python(2.6)文档的链接 。 不过,您可能对Python 3文档更感兴趣。


#2楼

做这个:

list(map(chr,[66,53,0,94]))

在Python 3+中,许多迭代可迭代对象的进程本身都会返回迭代器。 在大多数情况下,这最终会节省内存,并且应该使处理速度更快。

如果您要做的只是最终遍历此列表,则无需将其转换为列表,因为您仍然可以遍历map对象,如下所示:

# Prints "ABCD"
for ch in map(chr,[65,66,67,68]):
    print(ch)

#3楼

我对Python 3.1不熟悉,但是可以吗?

[chr(x) for x in [66, 53, 0, 94]]

#4楼

返回列表的地图功能具有保存键入的优点,尤其是在交互式会话期间。 您可以定义返回列表的lmap函数(类似于python2的imap ):

lmap = lambda func, *iterable: list(map(func, *iterable))

然后调用lmap而不是maplmap(str, x)list(map(str, x))短5个字符(在这种情况下为30% list(map(str, x)) ,并且肯定比[str(v) for v in x][str(v) for v in x] 。 您也可以为filter创建类似的功能。

对原始问题有一条评论:

我建议重命名为Geting map()以返回Python 3. *中的列表,因为它适用于所有Python3版本。 有没有办法做到这一点? – meawoppl 1月24日17:58

可能做到这一点,但它是一个非常糟糕的主意。 只是为了好玩,您可以( 但不应 )执行以下操作:

__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator

#5楼

Python 3.5的新功能:

[*map(chr, [66, 53, 0, 94])]

多亏了其他拆包概述

更新

一直在寻找更短的途径,我发现这也行得通:

*map(chr, [66, 53, 0, 94]),

开箱也适用于元组。 注意最后的逗号。 这使其成为1个元素的元组。 也就是说,它等效于(*map(chr, [66, 53, 0, 94]),)

它比带有方括号的版本短一个字符,但我认为最好写,因为您从星号-扩展语法开始,所以我觉得它比较软。 :)

本文转载自:https://stackoom.com/question/5T3j/获取map-以在Python-x中返回列表

粉丝 0
博文 1097
码字总数 0
作品 0
深圳
高级程序员
私信 提问
加载中

评论(0)

python2.x和python3.x的区别

Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python3.0在设计的时候没有考虑向下相容。许多针对早期Python版本...

leejia1989
2018/06/26
0
0
python学习笔记 | Python 2.x 中 raw_input() 和 input() 的区别

Python 2.x 和 Python 3.x 还是有一点小差别的。比如 input 在 Python 2.x 中有两个函数 rawinput() 和 input()。在 Python 3.x 中,只有一个函数来获取用户输入,这被称为 input(),这相当于...

跨界的聚能
2018/05/19
0
0
python--前进快速的编程语言知识点提要

python一般用于人工智能,我在学习它是观看的是百度AI文档,感兴趣的可以看看 python 11.21 2.X和3.X 2.X:用户更多一些,稳定,第三方库 python 语法优雅、简洁、快速。。。 python解析器 ...

橙以
2018/12/14
0
0
Python函数式编程中map()、reduce()和filter()函数的用法

Python中、和三个函数均是应用于序列的内置函数,分别对序列进行遍历、递归计算以及过滤操作。这三个内置函数在实际使用过程中常常和联合使用,我们首先介绍下lambda函数。1、lambda函数 la...

损失函数
2018/05/24
0
0
「Python 学习手册」阅读笔记

【注】书籍作者:Mark Lutz (原书第五版) # Python   Python 是一门通用型的编程语言,而它时常扮演着脚本语言的角色。一般来说,它可定义为一门面型对象的脚本语言,是一门融合了面向过程...

果汁凉茶丶
2019/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring基础

主要用于service层; 轻量级java开发框架; 各层 web层:struts,spring-MVC service层:spring dao层:hibernate,mybatis , jdbcTemplate --> spring-data Spring核心:控制反转IOC 切面编...

七宝1
11分钟前
19
0
解决overflow+border-radius+transform圆角问题

网上还有其他版本,但是对我来说都不好使,下面是我在Chrome上的代码。overflow:hidden依然是不能正常使用,换成unset就可以,读者如果有更好的解决方案,请留言,谢谢。 <figure> <img...

hi懒喵
16分钟前
39
0
《C语言》—— 数组

书籍使我变成了一个幸福的人,使我的生活变成轻松而舒适的诗。——高尔基 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 点关注,不迷路!...

龙跃十二
30分钟前
60
0
Java小案例: 1000以内的水仙花数

要求在控制台分别展示1000以内的水仙花数。 如下:↓ 水仙花数规则: 水仙花数至少是一个3位数 每位数字的立方数的累加和,正好等于该数字本身。 例如:153就是一个水仙花数。每位数字分别...

漫路h
昨天
66
0
centos 防火墙端口设置

查看开放的端口号 firewall-cmd --lists-all 设置开放的端口号 firewall-cmd --add-service=http --permanent 1. //--permanent表示永久生效,不加这个参数的话只会针对本次执行完命令生效,重...

ACE_LCX
昨天
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部