如何在列表中拆分元素 Python.



>假设我有一个列表,其中每个元素包含 1 个以上的字符,如下所示:

ls = [" *X* ", " *** ", " W** "]

我想将多个特征元素分成单独的元素,如下所示:

ls = [" * ", "X", " * ", " * ", " * ", " * ", "W", " * ", " * "]

我该怎么做?

试试这个,

ls = ["*X*", "***", "W**"]
output = []
for i in ls:
output.extend(list(i.strip()))
print(output)

嵌套列表推导是一种快速简便的扁平化方法:

ls = ["*X*", "***", "W**"]
flattened = [char for entry in ls for char in entry]
# Produces ['*', 'X', '*', '*', '*', '*', 'W', '*', '*']

ls = [" *X* ", " *** ", " W** "]

def split(word): 
return [char for char in word.strip() ] 
splitted_list = []
for word in ls:
splitted_list.extend(split(word))
print(splitted_list)
['*', 'X', '*', '*', '*', '*', 'W', '*', '*']

简单的join+split就可以了

print (''.join(ls).split())
#['*', 'X', '*', '*', '*', '*', 'W', '*', '*']

如果您希望元素中有空格

print ([i if i!='*' else f' {i} ' for i in ''.join(ls).replace(' ','')])
#[' * ', 'X', ' * ', ' * ', ' * ', ' * ', 'W', ' * ', ' * ']

您可以在*项周围添加空格,并使用isspace()过滤掉空格:

>>> ls = [" *X* ", " *** ", " W** "]
>>> [f" {c} " if c == "*" else c for s in ls for c in s if not c.isspace()]
[' * ', 'X', ' * ', ' * ', ' * ', ' * ', 'W', ' * ', ' * ']

如果我们不关心*周围的空间,那么我们可以简化上述内容:

>>> [c for s in ls for c in s if not c.isspace()]
['*', 'X', '*', '*', '*', '*', 'W', '*', '*']

另请注意,[c for s in ls for c in s]只是扁平化列表。

您好,这是我的解决方案,因为我在评论中意识到您想跳过空格,并且当字符*时,您必须将其放在空格之间,这是我的解决方案:

ls = [" *X* ", " *** ", " W** "]
newls =[]
for ele in ls:
for char in ele:
if char==" ":
continue;
if char=="*":
char=" "+char+" "
newls.append(char)
print(newls)

这是输出:[' * ', 'X', ' * ', ' * ', ' * ', ' * ', 'W', ' * ', ' * ']

我希望这能帮助你。

你可以使用这样的列表推导式

ls = [" *X* ", " *** ", " W** "]
l = [x.strip() for sublist in ls for x in sublist if x.strip()]
print(l)

输出

['*', 'X', '*', '*', '*', '*', 'W', '*', '*']

最新更新