Obtener la primera palabra de todas las cadenas en las listas

Tengo un archivo CSV que estoy leyendo como a continuación. Necesito tener la primera palabra de todas las cadenas. Sé cómo obtener la primera letra, pero no estoy seguro de cómo puedo obtener las palabras.

['diffuse systemic sclerosis', 'back', 'public on july 15 2008'] ['diffuse systemic sclerosis', 'forearm', 'public on may 9 2014'] 

Quiero que mi salida sea

 diffuse back public forearm 

Puede usar una lista de comprensión y función split() :

 >>> l=['diffuse systemic sclerosis', 'back', 'public on july 15 2008'] >>> [i.split()[0] for i in l] ['diffuse', 'back', 'public'] 

Se puede utilizar la comprensión.

 >>> l = [['diffuse systemic sclerosis', 'back', 'public on july 15 2008'] ,['diffuse systemic sclerosis', 'forearm', 'public on may 9 2014']] >>> list({i.split()[0] for j in l for i in j}) ['back', 'diffuse', 'forearm', 'public'] 
 l = [ ['diffuse systemic sclerosis', 'back', 'public on july 15 2008'], ['diffuse systemic sclerosis', 'forearm', 'public on may 9 2014'] ] d = lambda o: [a.split().pop(0) for a in o] r = lambda a,b: d(a) + d(b) print "\n".join(set(reduce(r, l))) >>> public forearm diffuse back 

Puede usar str.split en una lista de comprensión, teniendo en cuenta que puede especificar maxsplit para reducir el número de operaciones:

 L = ['diffuse systemic sclerosis', 'back', 'public on july 15 2008'] res = [i.split(maxsplit=1)[0] for i in L] # ['diffuse', 'back', 'public'] 

También puede realizar las mismas operaciones funcionalmente:

 from operator import itemgetter, methodcaller splitter = methodcaller('split', maxsplit=1) res = list(map(itemgetter(0), map(splitter, L))) 

En varias listas, si desea mantener el orden con el que observa las primeras palabras únicas, puede usar la receta itertool unique_everseen , que también se encuentra en la biblioteca more_itertools :

 from itertools import chain from more_itertool import unique_everseen L1 = ['diffuse systemic sclerosis', 'back', 'public on july 15 2008'] L2 = ['diffuse systemic sclerosis', 'forearm', 'public on may 9 2014'] res = list(unique_everseen(i.split(maxsplit=1)[0] for i in chain(L1, L2))) # ['diffuse', 'back', 'public', 'forearm']