Python:无论如何使用map来获取元组的第一个元素
我有一个元组的元组,我想将每个元组中的第一个值放入一个集合中。我认为使用 map() 是一个很好的方法,唯一的事情是我找不到一种简单的方法来访问元组中的第一个元素。例如,我有元组 ((1,), (3,))
。我想做类似 set(map([0], ((1,), (3,))))
的事情(其中 [0]
正在访问第零个元素)得到一个包含 1 和 3 的集合。我能想到的唯一方法是定义一个函数:def first(t): return t[0]。无论如何,是否可以在一行中完成此操作而无需声明该函数?
I have a tuple of tuples and I want to put the first value in each of the tuples into a set. I thought using map() would be a good way of doing this the only thing is I can't find an easy way to access the first element in the tuple. So for example I have the tuple ((1,), (3,))
. I'd like to do something like set(map([0], ((1,), (3,))))
(where [0]
is accessing the zeroth element) to get a set with 1 and 3 in it. The only way I can figure to do it is to define a function: def first(t): return t[0]
. Is there anyway of doing this in one line without having to declare the function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
使用列表理解:
Use a list comprehension:
使用
operator.itemgetter
:列表理解通常更具可读性,
itemgetter
最接近您的要求。它也更快一点:Use
operator.itemgetter
:While the list comprehensions are generally more readable,
itemgetter
is closest to what you asked for. It's also a bit faster:还有另一种获取方式:
Just another way to get it:
Python 支持使用
lambda
创建匿名函数a> 关键字。这允许您使用函数而无需正式定义它。给定您的示例,您将像这样使用 lambda:这相当于:
但正如其他人所说,列表推导式优于使用映射。
Python supports the creation of anonymous function using the
lambda
keyword. This allows you to use a function without formally defining it. Given your example, you'd use the lambda like this:This is equivalent to:
But as other people have said, list comprehensions are preferred over the use of map.
您可以在 Python 2.7 和 3.x 中使用集合理解:
或在 Python < 2.7:
You can use a set comprehension in Python 2.7 and 3.x:
or in Python < 2.7:
如果元组中有更多项目,您可以使用 izip 和 islice 节省一些内存和时间。
If there are more items in your tuples you might save some memory and time using izip and islice.
和@Winston 一起去。列表理解非常棒。如果您确实想要使用映射,请按照之前的建议使用 lambda,或者逻辑上等效的...
这仅供参考;您应该使用列表比较
Go with @Winston. List comprehensions are great. If you really want to use map, use a lambda as previously suggested, or the logically equivalent...
This is just for info; You should use the list comp