mew*_*ire 20 python whitespace join list slice
我有这样的输入:
['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
Run Code Online (Sandbox Code Playgroud)
我想在元素之间''
加入这样的输出:
['assembly', 'python', 'java', 'ruby', 'javascript', 'c++']
Run Code Online (Sandbox Code Playgroud)
我尝试使用join
和列表切片是这样的:
a=['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
a[2:5] = [''.join(a[ 2: 5])]
a=['assembly', '', 'python', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
Run Code Online (Sandbox Code Playgroud)
这在某种程度上可行,但是我不知道如何遍历整个列表。
Chr*_*ris 24
from itertools import groupby
l = ['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
new_l = [''.join(g) for k, g in groupby(l, key = bool) if k]
Run Code Online (Sandbox Code Playgroud)
输出:
['assembly', 'python', 'java', 'ruby', 'javascript', 'c++']
Run Code Online (Sandbox Code Playgroud)
小智 5
这太糟糕了,但是
lambda b:lambda l:''.join(i or b for i in l).split(b)
Run Code Online (Sandbox Code Playgroud)
可以接受可以保证列表的串联中不包含的任何字符串,并返回执行所需功能的函数。当然,对于您的特定情况,您可能只想使用一次或两次,因此,如果可以保证列表中的任何元素都不包含空格,则它看起来可能更像:
a = ['assembly', '', 'py', 'tho', 'n', '', 'ja', 'va', '', 'rub', 'y', '', 'java', 'script', '', 'c++']
a = ''.join(i or ' ' for i in a).split(' ')
Run Code Online (Sandbox Code Playgroud)