2

我有一个与此格式类似的列表:

list1 = ['random words go', 'here and','the length varies','blah',
         'i am so confused', 'lala lala la']

什么代码适合返回列表的每个第三项,包括第一个单词?这是预期的输出:

["random", "here", "length", "i", "confused", "la"]

我在想我应该使用拆分功能,但我不知道该怎么做。有人还可以解释我如何做到这一点,这样整个列表就不会像那样“部分”吗?相反,如果有意义的话,我怎么能把它变成一个长长的列表。

4

6 回答 6

6

这可能是最易读的方式:

>>> list1 = ['random words go', 'here and','the length varies','blah', 'i am so confused', 'lala lala la']
>>> result = ' '.join(list1).split()[::3]
['random', 'here', 'length', 'i', 'confused', 'la']

或不再次加入和拆分列表:

from itertools import chain
result = list(chain.from_iterable(s.split() for s in list1))[::3]

那么你可以加入结果:

>>> ' '.join(result)
'random here length i confused la'
于 2013-07-17T00:11:23.087 回答
3

去做:

list1 = ['random words go', 'here and','the length varies','blah', 'i am so confused', 'lala lala la']

from itertools import chain, islice    
sentence = ' '.join(islice(chain.from_iterable(el.split() for el in list1), None, None, 3))
# random here length i confused la
于 2013-07-17T00:13:08.830 回答
1
[word for item in list1 for word in item.split()][0::3]
于 2013-07-17T00:24:51.320 回答
0

把它变成一个长长的列表:

>>> list6 = []
>>> for s in list1:
...   for word in s.split():
...     list6.append(word)
... 
>>> list6
['random', 'words', 'go', 'here', 'and', 'the', 'length', 'varies',     'blah', 'i', 'am', 'so', 'confused', 'lala', 'lala', 'la']
>>> 

然后你可以按照 [::3] 的建议进行切片

>>> list6[::3]
['random', 'here', 'length', 'i', 'confused', 'la']

如果你想在一个字符串中:

>>> ' '.join(list6[::3])
'random here length i confused la'
>>>>
于 2013-07-17T00:27:07.893 回答
0

另一个节省内存的版本

>>> list1 = ['random words go', 'here and','the length varies','blah', 'i am so confused', 'lala lala la']
>>> from itertools import chain, islice
>>> ' '.join(islice(chain.from_iterable(map(str.split, list1)), 0, None, 3))
'random here length i confused la'
于 2013-07-17T00:22:36.613 回答
0

尝试这个:

>>> list1 = ['random words go', 'here and','the length varies','blah', 'i am so confused', 'lala lala la']
>>> result = ' '.join(list1).split()[::3]
['random', 'here', 'length', 'i', 'confused', 'la']
于 2013-07-17T00:37:40.810 回答