простого решение, и самый быстрый в большинстве случаев.
[item[0] for item in x]
#or
[item for (item,) in x]
В качестве альтернативы, если вам нужен функциональный интерфейс для доступа индекса (но немного медленнее):
from operator import itemgetter
zero_index = itemgetter(0)
print map(zero_index, x)
Наконец, если последовательность слишком мал, чтобы поместиться в памяти, вы можете сделать это итеративно. Это намного медленнее в коллекциях, но использует память только одного элемента.
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))
Но если все, что вы собираетесь сделать, это перебирать в любом случае, вы можете просто использовать кортеж распаковку:
for (item,) in x:
myfunc(item)
Самый эффективный способ будет зависеть от того, что вы планируете с ними делать потом. Например, нет смысла создавать новый список, если вы собираетесь перебирать этот список позже. Если это так, более эффективно просто сделать что-то вроде: 'for (i,) в x: do_something_with (i)'. – Aya
Мне нужно отправить эту строку в другую функцию. –