我的列表格式与此类似:
list1 = ['random words go', 'here and','the length varies','blah',
'i am so confused', 'lala lala la']
什么代码适合返回列表中的每个第3项,包括第一个单词?这是预期的输出:
["random", "here", "length", "i", "confused", "la"]
我在想我应该使用split功能,但我不知道该怎么做。有人也可以解释我是如何做到这一点所以整个列表不是那样的“部分”吗?相反,如果有意义的话,我怎么能把它变成一个长列表。
答案 0 :(得分: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'
答案 1 :(得分:3)
Go for:
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
答案 2 :(得分:1)
[word for item in list1 for word in item.split()][0::3]
答案 3 :(得分: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'
答案 4 :(得分: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'
>>>>
答案 5 :(得分: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']