Python元组列表,需要解压缩和清理

Edg*_*ian 3 python python-2.7

假设你有一个列表如

x = [('Edgar',), ('Robert',)]

什么是最有效的方法来获得字符串'Edgar''Robert'

例如,不要真的需要x [0] [0].

Fra*_*ila 6

简单的解决方案,在大多数情况下最快.

[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)