【发布时间】:2012-05-30 21:45:46
【问题描述】:
返回以下内容的最紧凑方式是什么:
给定一个元组列表,返回一个由元组第一个(或第二个,无关紧要)元素组成的列表。
为:
[(1,'one'),(2,'two'),(3,'three')]
返回列表将是
[1,2,3]
【问题讨论】:
返回以下内容的最紧凑方式是什么:
给定一个元组列表,返回一个由元组第一个(或第二个,无关紧要)元素组成的列表。
为:
[(1,'one'),(2,'two'),(3,'three')]
返回列表将是
[1,2,3]
【问题讨论】:
>>> tl = [(1,'one'),(2,'two'),(3,'three')]
>>> [item[0] for item in tl]
[1, 2, 3]
【讨论】:
>>> mylist = [(1,'one'),(2,'two'),(3,'three')]
>>> [j for i,j in mylist]
['one', 'two', 'three']
>>> [i for i,j in mylist]
[1, 2, 3]
这是使用list comprehension (have a look at this link)。因此它会遍历mylist 中的元素,依次将i 和j 设置为元组中的两个元素。它实际上等同于:
>>> newlist = []
>>> for i, j in mylist:
... newlist.append(i)
...
>>> newlist
[1, 2, 3]
【讨论】:
如果两者都需要,请使用 zip
>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]
【讨论】:
你也可以试试这个..
dict(my_list).keys()
【讨论】:
试试这个。
>>> list(map(lambda x: x[0], my_list))
【讨论】: