假设你有一个列表如
x = [('Edgar',), ('Robert',)]
什么是最有效的方法来获得字符串'Edgar'和'Robert'?
例如,不要真的需要x [0] [0].
简单的解决方案,在大多数情况下最快.
[item[0] for item in x]
#or
[item for (item,) in x]
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要一个功能接口来索引访问(但稍慢):
from operator import itemgetter
zero_index = itemgetter(0)
print map(zero_index, x)
Run Code Online (Sandbox Code Playgroud)
最后,如果序列太小而无法放入内存中,则可以迭代执行此操作.这在集合上要慢得多,但只使用一个项目的内存.
from itertools import chain
x = [('Edgar',), ('Robert',)]
# list is to materialize the entire sequence.
# Normally you would use this in a for loop with no `list()` call.
print list(chain.from_iterable(x))
Run Code Online (Sandbox Code Playgroud)
但是如果你要做的就是迭代,你也可以只使用元组解包:
for (item,) in x:
myfunc(item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4856 次 |
| 最近记录: |